{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/utilities.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./app/javascript/fetchEmail.js","webpack:///./app/javascript/packs/analytics/helpers.js","webpack:///./app/javascript/packs/analytics/handlers.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./app/javascript/robots_event_dispatch.js","webpack:///./app/javascript/events/robots_events.js","webpack:///./app/javascript/tracking_service_page_visit_dispatch.js","webpack:///./app/javascript/events/tracking_service_events.js","webpack:///./app/javascript/packs/analytics/analytics_service.js","webpack:///./app/javascript/packs/analytics.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","getCookie","match","document","cookie","RegExp","getPageName","customTitleMetaTag","head","querySelector","content","title","location","href","split","AJAX","URL","headerParams","username","password","method","bodyParams","urlParams","Promise","resolve","reject","xhttp","XMLHttpRequest","formatURLParams","onreadystatechange","this","readyState","status","JSON","parse","responseText","String","open","setRequestHeader","btoa","send","stringify","e","message","params","URLSearchParams","entries","set","toString","getQueryParam","param","window","search","substring","length","pair","setCookie","fetchEmail","uid","userLookupUrl","process","then","email","createImpactSessionCookie","cookieName","id","addEventListeners","addEventListener","onPageHideHandler","instrumentedClickHandler","onVisibilityChangeHandler","isDocumentVisible","visibilityState","tryPopulateEmail","a","BPFTracking","cookiesSet","inputs","querySelectorAll","uidCookie","forEach","once","terminatingEventSent","element","bpfAnalytics","target","getAttribute","parentNode","analyticsData","concat","eventPayload","parsedLoad","error","sentry","hub","captureException","scope","clear","setTransactionName","setContext","classList","payload","_typeof","obj","iterator","constructor","g","Function","runtime","undefined","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","makeInvokeMethod","fn","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","RobotsEventDispatch","base_url","post_url","event_type","args","Date","toISOString","opts","mergeOptions","obj1","obj2","obj3","attrname","sendEvent","data","TrackingServicePageVisitDispatch","baseUrl","postUrl","withCredentials","onSuccessCallback","page_visit","DONE","dispatchEvent","Event","sendPageVisit","url","referrer_url","referrer","page_name","AnalyticsService","createPageVisitRecord","trackingService","robots","initialize"],"mappings":"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","file":"js/analytics-ebfa4dec17f2b2cec697.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","export function getCookie(name) {\n var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\n if (match) return match[2];\n}\n\nexport function getCurrentUrl() {\n return location.href.split('?')[0];\n}\n\nexport function getPageName() {\n let customTitleMetaTag = document.head.querySelector(\"meta[name='bpf-title']\")\n if (!!customTitleMetaTag) {\n return customTitleMetaTag.content;\n }\n\n // fall back to url if the page doesn't have a title set\n return document.title || getCurrentUrl();\n}\n\nexport function getPageMeta() {\n let customTitleMetaTag = document.head.querySelector(\"meta[name='bpf-meta']\")\n\n if (!!customTitleMetaTag) {\n try {\n return JSON.parse(customTitleMetaTag.content);\n } catch (e) {\n if (typeof sentry !== 'undefined') {\n sentry.hub.captureException(e, scope => {\n scope.clear();\n scope.setTransactionName(\"Analytics: getPageMeta\");\n scope.setContext(\"Dom Info\", {\n meta: customTitleMetaTag,\n });\n return scope;\n });\n }\n\n return null;\n }\n }\n\n return null;\n}\n\n// This function accepts two parameters: the URL to send the request to, and params, which is an object made up from 3\n// seperate objects: the headerParams, bodyParams, and urlParams\n// The header params defines any authentication, and the HTTP method to be used\n// The body params will be serialized into JSON and sent via the request body\n// Finally, the URL params will be URL encoded and appended to the URL\nexport function AJAX(URL, { headerParams: { username, password, method = 'POST' }, bodyParams, urlParams } = {}) {\n return new Promise((resolve, reject) => {\n const xhttp = new XMLHttpRequest();\n if (urlParams) {\n URL += formatURLParams(urlParams);\n }\n\n xhttp.onreadystatechange = function () {\n if (this.readyState === 4 && this.status === 200) {\n resolve(JSON.parse(this.responseText));\n } else if ((this.readyState === 4 && this.status === 0) || String(this.status).match(/^[4|5]/)) {\n reject('Unexpected response');\n }\n };\n\n try {\n xhttp.open(method, URL, true);\n xhttp.setRequestHeader('Content-Type', 'application/JSON');\n if (username && password) {\n xhttp.setRequestHeader('Authorization', `Basic ${btoa(`${username}:${password}`)}`);\n }\n xhttp.send(JSON.stringify(bodyParams));\n } catch (e) {\n reject(e.message);\n }\n });\n}\n\nexport function formatURLParams(params) {\n const urlParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n urlParams.set(key, value);\n }\n\n return `?${urlParams.toString()}`;\n}\n\nexport function getQueryParam(param) {\n let searchString = window.location.search.substring(1);\n let params = searchString.split(\"&\");\n\n for (let i = 0; i < params.length; i++) {\n var pair = params[i].split(\"=\");\n if (pair[0] == param) {\n return pair[1];\n }\n }\n}\n\nexport function setCookie(name, value) {\n document.cookie = `${name}=${value}; path=/`;\n}\n\nexport function initializeGlobals() {\n global.BPF ||= {};\n global.BPF.Intercom ||= {};\n}\n","module.exports = require(\"regenerator-runtime\");\n","import { AJAX } from './utilities';\n\nexport const LOOKUP_URL_PATH = '/lookup';\n\nexport function fetchEmail(uid) {\n return new Promise((resolve) => {\n if (!uid) {\n return resolve();\n }\n\n const userLookupUrl = `${process.env.TRACKING_BASE_URL}${LOOKUP_URL_PATH}`;\n\n const urlParams = { uid };\n const headerParams = { username: process.env.TRACKING_API_USERNAME, password: process.env.TRACKING_API_PASSWORD };\n const params = { urlParams, headerParams };\n\n AJAX(userLookupUrl, params)\n .then(({ email }) => {\n resolve(email || null);\n }).catch(resolve);\n });\n}\n","import { getCurrentUrl, getPageName, getPageMeta, getQueryParam, setCookie, getCookie } from 'utilities';\nimport { instrumentedClickHandler, onPageHideHandler, onVisibilityChangeHandler } from './handlers';\nimport { fetchEmail } from 'fetchEmail';\n\nexport function createImpactSessionCookie() {\n const cookieName = 'irclickid';\n const id = getQueryParam(cookieName);\n\n if (!id) return;\n\n // If irclickid param is present, create a cookie session.\n setCookie(cookieName, id);\n}\n\nexport function addEventListeners() {\n // We need to listen to 'pagehide' events because 'visibilitychange'\n // events are not guaranteed to fire on all browsers\n document.addEventListener('pagehide', onPageHideHandler);\n document.addEventListener('click', instrumentedClickHandler);\n\n // We need to listen to 'visibilitychange' events\n // because 'pagehide' is not guaranteed to fire on mobile\n document.addEventListener('visibilitychange', onVisibilityChangeHandler);\n}\n\nexport function isDocumentVisible() {\n return document.visibilityState !== 'hidden';\n}\n\nexport async function tryPopulateEmail() {\n if (window.BPFTracking.cookiesSet) {\n const inputs = document.querySelectorAll(\"input[type='email']\");\n const uidCookie = getCookie('uid');\n const autoSet = getQueryParam('bpf_autofill');\n\n if (autoSet && inputs.length > 0 && !!uidCookie) {\n const email = await fetchEmail(uidCookie);\n inputs.forEach(e => e.value ||= email);\n }\n } else {\n await new Promise((resolve) => {\n window.addEventListener(\n 'bpfAnalyticsCookiesSet',\n async function () {\n await tryPopulateEmail();\n resolve();\n },\n { once: true },\n );\n });\n }\n}\n","import { isDocumentVisible } from './helpers';\n\nexport function onPageHideHandler() {\n if (!window.BPFTracking.terminatingEventSent) {\n window.BPFTracking.terminatingEventSent = true;\n }\n}\n\nexport function onVisibilityChangeHandler() {\n if (isDocumentVisible()) {\n window.BPFTracking.terminatingEventSent = false;\n } else {\n onPageHideHandler();\n }\n}\n\nexport function instrumentedClickHandler(e) {\n const bpfAnalytics = 'data-bpf-analytics';\n let element;\n\n // find nearest element ancestor with a data-bpf-analytics attribute\n for (element = e.target; element && element !== document; element = element.parentNode) {\n if (element.getAttribute(bpfAnalytics)) {\n break;\n }\n }\n\n if (!element || element === document) { return; }\n const analyticsData = element.getAttribute(bpfAnalytics);\n if (!analyticsData) { return; }\n\n const eventPayloads = [].concat(analyticsData);\n eventPayloads.forEach(eventPayload => {\n try {\n const parsedLoad = JSON.parse(eventPayload);\n const eventType = parsedLoad['event_type'];\n const eventName = parsedLoad['event_name'];\n if (!eventName) { throw 'Cannot fire an event without a name' }\n\n } catch (error) {\n if (typeof sentry !== 'undefined') {\n sentry.hub.captureException(error, scope => {\n scope.clear();\n scope.setTransactionName(\"Analytics: InstrumentedClickHandler\");\n scope.setContext(\"Dom Info\", {\n id: element.id,\n classList: element.classList,\n payload: eventPayload,\n });\n return scope;\n });\n }\n\n return;\n }\n });\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\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\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\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\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(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 &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(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 (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default class RobotsEventDispatch {\n constructor(base_url) {\n this.post_url = base_url + \"/webhooks/events/\"\n }\n\n send(event_type, args) {\n var params = new Object();\n\n params['event_type'] = event_type\n if (args['event_occurred_at'] == null) {\n params['event_occurred_at'] = (new Date()).toISOString();\n }\n\n var opts = this.mergeOptions(params, args)\n\n var xhttp = new XMLHttpRequest();\n xhttp.open(\"POST\", this.post_url, true);\n xhttp.setRequestHeader(\"Content-Type\", \"application/JSON\");\n xhttp.send( JSON.stringify(opts) );\n }\n\n mergeOptions(obj1, obj2){\n var obj3 = {};\n for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }\n for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }\n return obj3;\n }\n}\n\n// This class is instantiated once at page load time,\n// like this:\n// event_dispatch = new RobotsEventDispatch(\"http://localhost:3001\");\n//\n// and then can be re-used anywhere by calling event_dispatch.send();\n// like:\n// event_dispatch.send('OFT::SpeciesPhotoViewed', { object_id: 1, email: \"boolean@gmail.com\" })\n","import RobotsEventDispatch from \"robots_event_dispatch\";\nimport { getCookie } from 'utilities';\n\nfunction newEventDispatcher() {\n return (new RobotsEventDispatch(process.env.ROBOTS_API_BASE_URL));\n}\n\nexport function sendEvent(name, data) {\n if (window.BPFTracking.cookiesSet) {\n data[\"pid\"] = getCookie(\"pid\");\n data[\"sid\"] = getCookie(\"sid\");\n data[\"uid\"] = getCookie(\"uid\");\n newEventDispatcher().send(name, data);\n } else {\n data['event_occurred_at'] = (new Date()).toISOString();\n\n window.addEventListener(\n 'bpfAnalyticsCookiesSet',\n function() { BPFTracking.sendEvent(name, data); },\n { once: true }\n );\n }\n}\n","export default class TrackingServicePageVisitDispatch {\n constructor(baseUrl) {\n this.postUrl = baseUrl + \"/page_visits\";\n }\n\n send(args) {\n let xhttp = new XMLHttpRequest();\n xhttp.open('POST', this.postUrl, true);\n xhttp.setRequestHeader('Accept', 'application/json');\n xhttp.setRequestHeader('Content-Type', 'application/json');\n xhttp.withCredentials = true;\n xhttp.onreadystatechange = this.onSuccessCallback;\n\n xhttp.send(JSON.stringify({ page_visit: args }));\n }\n\n onSuccessCallback() {\n if (this.status == 200 && this.readyState == XMLHttpRequest.DONE) { // XMLHttpRequest.DONE == 4\n window.BPFTracking.cookiesSet = true;\n window.dispatchEvent(new Event('bpfAnalyticsCookiesSet'));\n }\n }\n}\n","import TrackingServicePageVisitDispatch from 'tracking_service_page_visit_dispatch';\nimport { getPageName } from 'utilities';\n\nfunction newEventDispatcher() {\n return (new TrackingServicePageVisitDispatch(process.env.TRACKING_BASE_URL));\n}\n\nexport function sendPageVisit() {\n newEventDispatcher().send(\n {\n url: window.location.href,\n referrer_url: document.referrer,\n page_name: getPageName()\n }\n )\n}\n","import { getCookie } from 'utilities';\nimport { \n addEventListeners,\n createImpactSessionCookie,\n tryPopulateEmail,\n} from './helpers';\nimport * as robots from 'events/robots_events';\nimport * as trackingService from 'events/tracking_service_events';\n\nexport default class AnalyticsService {\n initialize() {\n window.BPFTracking = {\n createPageVisitRecord: trackingService.sendPageVisit,\n sendEvent: robots.sendEvent,\n cookiesSet: (getCookie('pid') != null) && (getCookie('sid') != null),\n terminatingEventSent: false,\n }\n\n tryPopulateEmail();\n window.BPFTracking.createPageVisitRecord();\n\n createImpactSessionCookie();\n addEventListeners();\n }\n}\n","import AnalyticsService from './analytics/analytics_service';\n\nif (!window.BPFTracking) {\n const service = new AnalyticsService();\n service.initialize();\n}"],"sourceRoot":""}