{"version":3,"sources":["webpack:///asa.js","webpack:///webpack/bootstrap ecf226d4b5c9341a6220","webpack:///./src/index.js","webpack:///./src/boot.js","webpack:///./src/browser.js","webpack:///./src/polyfills.js","webpack:///./src/partner.js","webpack:///./src/parseuri.js","webpack:///./src/auto_track.js","webpack:///./src/session.js","webpack:///./src/debug.js","webpack:///./src/user.js","webpack:///./~/cookies-js/dist/cookies.js","webpack:///./src/domain_hash.js","webpack:///./src/sha1.js","webpack:///./src/randomness.js","webpack:///./src/cookies.js","webpack:///./src/utils.js","webpack:///./src/server.js","webpack:///./~/superagent/lib/client.js","webpack:///./~/superagent/~/component-emitter/index.js","webpack:///./~/superagent/~/reduce-component/index.js","webpack:///./~/superagent/lib/request-base.js","webpack:///./~/superagent/lib/is-object.js","webpack:///./~/superagent/lib/request.js","webpack:///./src/ajax.js","webpack:///./src/features.js","webpack:///./src/formatting.js","webpack:///./src/version.js","webpack:///./src/inbox.js","webpack:///./src/microdata.js","webpack:///./src/DOM.js","webpack:///./src/event.js","webpack:///./src/campaign.js","webpack:///./src/referrer.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","browser","runBootSequence","bootSequence","Array","i","length","window","asa","apply","partner","debug","inbox","server","pendingEvents","q","submitEvent","setPartnerInfo","e","forceLog","submitError","location","document","installTrimPolyfill","String","prototype","trim","this","replace","installEndsWithPolyfill","endsWith","searchString","position","subjectString","toString","isFinite","Math","floor","lastIndex","indexOf","parseUri","updatePartnerInfo","partnerId","partnerSId","partnerIdKey","partnerSIdKey","uri","href","asaPartnerValue","decodeURIComponent","queryKey","__asa","split","sessionStorage","setItem","removeItem","referrer","authority","currentHost","origin","str","o","options","parser","strictMode","exec","key","name","$0","$1","$2","strict","loose","session","sections","locationHashChanged","oldHash","newHash","substr","storedHash","setInterval","hash","links","domains","domainsTracked","tracker","ev","target","destination","alreadyHasParams","encodeURIComponent","asaId","getSession","addEventListener","user","randomness","sessionHash","Cookies","_","persistence","get","getItem","Error","set","value","Infinity","store","hasItem","item","sessionStore","SESSION_EXPIRE_TIMEOUT","SESSION_COOKIE_NAME","builtinSessionManager","hasSession","JSON","parse","t","Date","createSession","sessionData","stringify","override","getDomainId","getUserId","getNumber","updateTimeout","sessionId","providedSessionManager","hasSessions","sessionManager","customSession","resetSessionMgmt","console","log","noLog","doLog","unshift","arguments","me","setDebugMode","on","domainHash","userHash","USER_ID_COOKIE","generateUserId","host","userCreated","setUserId","userId","expires","path","getUserHash","getAndResetNewUserStatus","__WEBPACK_AMD_DEFINE_RESULT__","global","undefined","factory","_document","_cacheKeyPrefix","_maxExpireDate","defaults","secure","_cachedDocumentCookie","cookie","_renewCache","_cache","_getExtendedOptions","_getExpiresDate","_generateCookieString","expire","domain","_isValidDate","date","Object","isNaN","getTime","now","cookieString","toUTCString","_getCacheFromString","documentCookie","cookieCache","cookiesArray","cookieKvp","_getKeyValuePairFromCookieString","separatorIndex","decodedKey","error","_areEnabled","testKey","areEnabled","enabled","cookiesExport","d","h","a","charCodeAt","sha","hex_sha1","s","rstr2hex","rstr_sha1","str2rstr_utf8","binb2rstr","binb_sha1","rstr2binb","input","hexcase","x","hex_tab","output","charAt","y","fromCharCode","len","w","b","olda","oldb","oldc","oldd","olde","j","bit_rol","safe_add","sha1_ft","sha1_kt","lsw","msw","num","cnt","round","random","docCookies","sKey","RegExp","sValue","vEnd","sPath","sDomain","bSecure","test","sExpires","constructor","Number","keys","aKeys","nLen","nIdx","copyProps","o1","o2","hasOwnProperty","result","runSafe","fn","msg","retryPeriod","retryCount","cb","description","setTimeout","batchIntervalHandler","errorSubmitter","eventSubmitter","r","ajax","features","formatting","info","pendingSubmission","done","eventPostAddress","errorPostAddress","post","packet","callback","request","setRequestHeader","send","submitData","data","opts","url","formatDateTime","isExperiment","MINI_AJAX","err","res","end","context","code","v","version","submitNow","submitNow2","splice","setDefaultSubmitters","batchEvent","push","batchOn","batchSize","min","slice","batchOff","clearInterval","submitEv","submitErr","reset","noop","isHost","obj","serialize","isObject","pairs","pushEncodedKeyValuePair","join","val","isArray","forEach","parseString","parts","pair","parseHeader","index","line","field","lines","fields","pop","toLowerCase","isJSON","mime","type","shift","params","reduce","Response","req","xhr","text","method","responseType","responseText","statusText","setStatusProperties","status","header","headers","getAllResponseHeaders","getResponseHeader","setHeaderProperties","body","parseBody","response","Request","self","_query","_header","original","rawResponse","statusCode","emit","new_err","del","root","Emitter","requestBase","bind","getXHR","XMLHttpRequest","protocol","ActiveXObject","serializeObject","types","html","json","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","application/json","ct","statusType","ok","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","notFound","forbidden","abort","aborted","clearTimeout","_responseType","accept","auth","pass","btoa","username","password","query","attach","file","filename","_getFormData","append","_formData","FormData","_data","warn","_parser","_callback","crossDomainError","crossDomain","timeoutError","timeout","_timeout","withCredentials","_withCredentials","onreadystatechange","readyState","timedout","handleProgress","total","percent","direction","hasListeners","onprogress","upload","_timer","open","contentType","head","patch","put","mixin","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","args","listeners","arr","initial","idx","curr","ms","then","fulfill","reject","use","getHeader","unset","RequestConstructor","XDomainRequest","onerror","onload","experiments","defineExperiment","percentage","exp","clearExperiments","experimentsLive","time","pad","number","timezone","hours","abs","minutes","sign","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","toFixed","getTimezoneOffset","major","minor","build","microdata","autoTrack","parseuri","getCampaign","getReferrer","postboxMessages","transport","serviceProviders","sessionResumed","setMapper","campaign","referrerAuth","currentAuth","package","newBrowser","newpackage","jq","collectReferencedProperties","element","refString","attr","refs","ref","refItem","collectProperties","collectComplexProperty","properties","collectSimpleProperty","el","tag","prop","children","each","child","findTopLevelItems","items","tagName","processElement","itemScope","itemProp","theOneMapper","__items","extractFromHead","meta","noMapper","callbackWrapper","extract","mapper","DOMElement","DOMElements","els","_els","_element","textContent","attrValue","getAttribute","$doms","n","$DOM","Element","wrapper","elem","elems","getElementById","querySelectorAll","exception","DOMMeta","pageview","title","pathname","search","sectionentered","section","page","custom","baseEvent","gatherMetaInfo","eventBody","gatherSystemInfo","sess","uid","partner_id","partner_sid","tenant_id","postboxEvents","defaultEventInfo","occurred","did","sid","tenant","eventName","eventInfo","extra","eventname","domElement","campaignKeys","utm_campaign","utm_source","source","utm_medium","medium","utm_term","term","utm_content","content"],"mappings":"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","file":"asa.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \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/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function () {\n\t __webpack_require__(1)();\n\t})();\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar browser = __webpack_require__(2);\n\tvar runBootSequence = function(bootSequence){\n\t bootSequence = bootSequence || [];\n\t if (!(bootSequence instanceof Array)) bootSequence = [bootSequence];\n\t\n\t for (var i = 0; i < bootSequence.length; i++) {\n\t browser.window.asa.apply(null, bootSequence[i]);\n\t }\n\t};\n\t\n\t__webpack_require__(3)();\n\t\n\tmodule.exports = function(bootSequence){\n\t // var DNT = navigator.doNotTrack || navigator.msDoNotTrack || browser.window.doNotTrack;\n\t // if (DNT && (DNT === 'yes' || DNT.charAt(0) === '1')) return;\n\t\tvar partner = __webpack_require__(4);\n\t\tvar autoTrack = __webpack_require__(6);\n\t\tvar debug = __webpack_require__(8);\n\t\tvar inbox = __webpack_require__(27);\n\t\tvar server = __webpack_require__(16);\n\t\tvar features = __webpack_require__(24);\n\t\n\t\ttry {\n\t\t\tvar pendingEvents = [];\n\t\t\tif ((typeof browser.window.asa !== 'undefined') && (typeof browser.window.asa.q !== 'undefined')) {\n\t\t\t\tpendingEvents = browser.window.asa.q;\n\t\t\t}\n\t\n\t\t\tbrowser.window.asa = inbox(server.submitEvent);\n\t\n\t\t\t// features.defineExperiment(features.MINI_AJAX, 10);\n\t partner.setPartnerInfo();\n\t runBootSequence(bootSequence);\n\t\n\t\t\tfor (var i = 0; i < pendingEvents.length; i++) {\n\t\t\t\tbrowser.window.asa.apply(null, pendingEvents[i]);\n\t\t\t}\n\t\n\t\t\t// autoTrack.sections();\n\t\t} catch (e) {\n\t\t\tdebug.forceLog('exception during init: ', e);\n\t server.submitError(e, {location : 'boot script'});\n\t\t}\n\t}\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t window : window,\n\t document : document \n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\tfunction installTrimPolyfill() {\n\t if (!String.prototype.trim) {\n\t String.prototype.trim = function() {\n\t return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\t };\n\t }\n\t}\n\tfunction installEndsWithPolyfill() {\n\t if (!String.prototype.endsWith) {\n\t String.prototype.endsWith = function(searchString, position) {\n\t var subjectString = this.toString();\n\t if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n\t position = subjectString.length;\n\t }\n\t position -= searchString.length;\n\t var lastIndex = subjectString.indexOf(searchString, position);\n\t return lastIndex !== -1 && lastIndex === position;\n\t };\n\t }\n\t}\n\tmodule.exports = function() {\n\t installTrimPolyfill();\n\t installEndsWithPolyfill();\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar parseUri = __webpack_require__(5);\n\tvar browser = __webpack_require__(2);\n\t\n\tvar updatePartnerInfo = function (){\n\t\tvar partnerIdKey = '__as.partner_id';\n\t\tvar partnerSIdKey = '__as.partner_sid';\n\t\tvar asaPartnerKey = '__asa';\n\t\tvar uri = parseUri(browser.window.location.href);\n\t\tvar asaPartnerValue = decodeURIComponent(uri.queryKey.__asa || '').split('|');\n\t\tvar partnerId;\n\t\tvar partnerSId;\n\t\tif (asaPartnerValue) {\n\t\t\tpartnerId = asaPartnerValue[0];\n\t\t\tpartnerSId = asaPartnerValue[1];\n\t\t}\n\t\n\t\tif (partnerId){\n\t\t\tbrowser.window.sessionStorage.setItem(partnerIdKey, partnerId);\n\t\t} else {\n\t\t\tbrowser.window.sessionStorage.removeItem(partnerIdKey);\n\t\t}\n\t\tif (partnerSId){\n\t\t\tbrowser.window.sessionStorage.setItem(partnerSIdKey, partnerSId);\n\t\t} else {\n\t\t\tbrowser.window.sessionStorage.removeItem(partnerSIdKey);\n\t\t}\n\t};\n\tmodule.exports = {\n\t\n\t\tsetPartnerInfo : function(){\n\t\t\tvar referrer = parseUri(browser.document.referrer).authority;\n\t\t\tvar currentHost = parseUri(browser.window.location.origin).authority;\n\t\t\tif (referrer != currentHost){\n\t\t\t\tupdatePartnerInfo();\n\t\t\t}\n\t\t}\n\t\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t// parseUri 1.2.2\n\t// (c) Steven Levithan \n\t// MIT License\n\t\n\tfunction parseUri (str) {\n\t\tvar\to = parseUri.options,\n\t\t\tm = o.parser[o.strictMode ? \"strict\" : \"loose\"].exec(str),\n\t\t\turi = {},\n\t\t\ti = 14;\n\t\n\t\twhile (i--) uri[o.key[i]] = m[i] || \"\";\n\t\n\t\turi[o.q.name] = {};\n\t\turi[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n\t\t\tif ($1) uri[o.q.name][$1] = $2;\n\t\t});\n\t\n\t\treturn uri;\n\t}\n\t\n\tparseUri.options = {\n\t\tstrictMode: false,\n\t\tkey: [\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"],\n\t\tq: {\n\t\t\tname: \"queryKey\",\n\t\t\tparser: /(?:^|&)([^&=]*)=?([^&]*)/g\n\t\t},\n\t\tparser: {\n\t\t\tstrict: /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n\t\t\tloose: /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/\n\t\t}\n\t};\n\t\n\tmodule.exports = parseUri;\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar session = __webpack_require__(7);\n\tvar parseUri = __webpack_require__(5);\n\tvar browser = __webpack_require__(2);\n\t\n\tmodule.exports = {\n\t\tsections: function () {\n\t\t\tvar locationHashChanged = function (oldHash, newHash) {\n\t\t\t\tasa('sectionentered', newHash.substr(1));\n\t\t\t};\n\t\t\tvar storedHash = '';\n\t\t\tbrowser.window.setInterval(function () {\n\t\t\t\tif (browser.window.location.hash != storedHash) {\n\t\t\t\t\tvar newHash = browser.window.location.hash;\n\t\t\t\t\tlocationHashChanged(storedHash, newHash);\n\t\t\t\t\tstoredHash = newHash;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t},\n\t\n\t\tlinks: function (domains) {\n\t\t\tvar domainsTracked = domains;\n\t\t\tvar tracker = function (ev) {\n\t\t\t\tvar href = ev.target.href;\n\t\t\t\tif (href) {\n\t\t\t\t\tvar destination = parseUri(href);\n\t\t\t\t\tif (domainsTracked.indexOf(destination.authority) > -1) {\n\t if (!destination.queryKey['__asa']){\n\t var alreadyHasParams = ev.target.href.indexOf('?') !== -1;\n\t href = href + (alreadyHasParams ? '&' : '?') + '__asa=' + encodeURIComponent(browser.window.asaId+'|'+session.getSession().id);\n\t ev.target.href = href;\n\t }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tbrowser.document.addEventListener('mousedown', tracker);\n\t\t\tbrowser.document.addEventListener('keyup', tracker);\n\t\t\tbrowser.document.addEventListener('touchstart', tracker);\n\t\t}\n\t};\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar debug = __webpack_require__(8);\n\tvar user = __webpack_require__(9);\n\tvar randomness = __webpack_require__(13);\n\tvar hash = __webpack_require__(11).sessionHash;\n\tvar Cookies = __webpack_require__(14);\n\tvar _ = __webpack_require__(15);\n\t\n\t\n\tvar persistence = {\n\t get: function(id) {\n\t try {\n\t return Cookies.getItem(id);\n\t } catch (e) {\n\t throw new Error('Error while trying to get item from session cookie:' + id);\n\t }\n\t },\n\t set: function(id, value) {\n\t try {\n\t return Cookies.setItem(id, value, Infinity, '/');\n\t } catch (e) {\n\t throw new Error('Error while trying to set item to session cookie: \"' + id + '\" <- ' + value);\n\t }\n\t }\n\t}\n\t\n\tvar store = {\n\t hasItem: function(name) {\n\t var item = persistence.get(name);\n\t return item;\n\t },\n\t getItem: function(name) {\n\t return persistence.get(name);\n\t },\n\t setItem: function(name, value) {\n\t persistence.set(name, value);\n\t },\n\t};\n\t\n\tvar sessionStore = store;\n\t\n\tvar SESSION_EXPIRE_TIMEOUT = 30 * 60 * 1000;\n\tvar SESSION_COOKIE_NAME = '__asa_session';\n\t\n\tvar builtinSessionManager = {\n\t hasSession: function() {\n\t var item = sessionStore.hasItem(SESSION_COOKIE_NAME);\n\t try{\n\t return item && JSON.parse(item).t > (1 * new Date()); \n\t } catch(e) {\n\t return false;\n\t }\n\t },\n\t\n\t createSession: function(sessionData) {\n\t sessionStore.setItem(SESSION_COOKIE_NAME, JSON.stringify(_.override(sessionData, { id: user.getDomainId() + '.' + hash(user.getUserId() + '.' + randomness.getNumber()), t: ((1 * new Date()) + SESSION_EXPIRE_TIMEOUT) })));\n\t },\n\t\n\t getSession: function() {\n\t return JSON.parse(sessionStore.getItem(SESSION_COOKIE_NAME));\n\t },\n\t \n\t updateTimeout: function updateTimeout(sessionData){\n\t var session = this.getSession();\n\t var sessionId = session.id;\n\t session = _.override(session, sessionData);\n\t session.t = ((1 * new Date()) + SESSION_EXPIRE_TIMEOUT);\n\t session.id = sessionId;\n\t \n\t sessionStore.setItem(SESSION_COOKIE_NAME, JSON.stringify(session));\n\t }\n\t\n\t};\n\tvar providedSessionManager = function(hasSessions, getSession, createSession) {\n\t return {\n\t hasSession: function() {\n\t return hasSessions();\n\t },\n\t\n\t createSession: function() {\n\t createSession();\n\t },\n\t\n\t getSession: function() {\n\t return getSession();\n\t }\n\t };\n\t};\n\tvar sessionManager = builtinSessionManager;\n\tmodule.exports = {\n\t getSession: function() {\n\t return sessionManager.getSession();\n\t },\n\t hasSession: function() {\n\t return !!(sessionManager.hasSession());\n\t },\n\t createSession: function(sessionData) {\n\t sessionManager.createSession(sessionData);\n\t },\n\t customSession: function(hasSessions, getSession, createSession) {\n\t sessionManager = providedSessionManager(hasSessions, getSession, createSession);\n\t },\n\t resetSessionMgmt: function resetSessionMgmt() {\n\t sessionManager = builtinSessionManager;\n\t },\n\t updateTimeout: function updateTimeout(sessionData){\n\t sessionManager.updateTimeout(sessionData);\n\t }\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t// old ie\n\tif (typeof console === 'undefined') {\n\t\twindow.console = {};\n\t}\n\tif (typeof console.log === 'undefined'){\n\t\twindow.console.log = function(){};\n\t}\n\t\n\tvar noLog = function noLog() { };\n\tvar doLog = function doLog() {\n\t\t[].unshift.call(arguments, 'asa.js:');\n\t\tconsole.log.apply(console, arguments);\n\t};\n\tvar me = module.exports = {\n\t\tlog: noLog,\n\t\tsetDebugMode: function (on) {\n\t\t\tme.log = on ? doLog : noLog;\n\t\t},\n\t\tforceLog:doLog\n\t};\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// var cookies = require('./cookies');\n\tvar Cookies = __webpack_require__(10);\n\tvar domainHash = __webpack_require__(11).domainHash;\n\tvar userHash = __webpack_require__(11).userHash;\n\tvar randomness = __webpack_require__(13);\n\tvar USER_ID_COOKIE = '__as_user';\n\tvar browser = __webpack_require__(2);\n\t\n\tvar generateUserId = function () {\n\t\treturn domainHash(browser.window.location.host) + '.' + userHash('' + randomness.getNumber());\n\t};\n\t\n\tvar userCreated = false;\n\t\n\tvar setUserId = function() {\n\t var userId = generateUserId();\n\t Cookies.set(USER_ID_COOKIE, userId, {expires: Infinity, path : '/'});\n\t // return userId; \n\t}\n\t\n\tvar getUserId = function () {\n\t\tif (!Cookies.get(USER_ID_COOKIE)) {\n\t userCreated = true;\n\t setUserId();\n\t\t}\n\t\n\t var userId = Cookies.get(USER_ID_COOKIE);\n\t if (userId.length > 70 || userId.length < 40) {\n\t // we need proper migrations here\n\t setUserId();\n\t userId = Cookies.get(USER_ID_COOKIE);\n\t }\n\t\n\t\treturn userId;\n\t};\n\t\n\tmodule.exports = {\n\t\tgetUserId: getUserId,\n\t\tgetDomainId: function () {\n\t\t\treturn domainHash(browser.window.location.host);\n\t\t},\n\t\tgetUserHash: function () {\n\t\t\treturn domainHash(getUserId().split('.')[1]);\n\t\t},\n\t getAndResetNewUserStatus : function(){\n\t if (userCreated) {\n\t userCreated = false;\n\t return true;\n\t } else \n\t return false;\n\t }\n\t \n\t};\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/*\r\n\t * Cookies.js - 1.2.3\r\n\t * https://github.com/ScottHamper/Cookies\r\n\t *\r\n\t * This is free and unencumbered software released into the public domain.\r\n\t */\r\n\t(function (global, undefined) {\r\n\t 'use strict';\r\n\t\r\n\t var factory = function (window) {\r\n\t if (typeof window.document !== 'object') {\r\n\t throw new Error('Cookies.js requires a `window` with a `document` object');\r\n\t }\r\n\t\r\n\t var Cookies = function (key, value, options) {\r\n\t return arguments.length === 1 ?\r\n\t Cookies.get(key) : Cookies.set(key, value, options);\r\n\t };\r\n\t\r\n\t // Allows for setter injection in unit tests\r\n\t Cookies._document = window.document;\r\n\t\r\n\t // Used to ensure cookie keys do not collide with\r\n\t // built-in `Object` properties\r\n\t Cookies._cacheKeyPrefix = 'cookey.'; // Hurr hurr, :)\r\n\t \r\n\t Cookies._maxExpireDate = new Date('Fri, 31 Dec 9999 23:59:59 UTC');\r\n\t\r\n\t Cookies.defaults = {\r\n\t path: '/',\r\n\t secure: false\r\n\t };\r\n\t\r\n\t Cookies.get = function (key) {\r\n\t if (Cookies._cachedDocumentCookie !== Cookies._document.cookie) {\r\n\t Cookies._renewCache();\r\n\t }\r\n\t \r\n\t var value = Cookies._cache[Cookies._cacheKeyPrefix + key];\r\n\t\r\n\t return value === undefined ? undefined : decodeURIComponent(value);\r\n\t };\r\n\t\r\n\t Cookies.set = function (key, value, options) {\r\n\t options = Cookies._getExtendedOptions(options);\r\n\t options.expires = Cookies._getExpiresDate(value === undefined ? -1 : options.expires);\r\n\t\r\n\t Cookies._document.cookie = Cookies._generateCookieString(key, value, options);\r\n\t\r\n\t return Cookies;\r\n\t };\r\n\t\r\n\t Cookies.expire = function (key, options) {\r\n\t return Cookies.set(key, undefined, options);\r\n\t };\r\n\t\r\n\t Cookies._getExtendedOptions = function (options) {\r\n\t return {\r\n\t path: options && options.path || Cookies.defaults.path,\r\n\t domain: options && options.domain || Cookies.defaults.domain,\r\n\t expires: options && options.expires || Cookies.defaults.expires,\r\n\t secure: options && options.secure !== undefined ? options.secure : Cookies.defaults.secure\r\n\t };\r\n\t };\r\n\t\r\n\t Cookies._isValidDate = function (date) {\r\n\t return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());\r\n\t };\r\n\t\r\n\t Cookies._getExpiresDate = function (expires, now) {\r\n\t now = now || new Date();\r\n\t\r\n\t if (typeof expires === 'number') {\r\n\t expires = expires === Infinity ?\r\n\t Cookies._maxExpireDate : new Date(now.getTime() + expires * 1000);\r\n\t } else if (typeof expires === 'string') {\r\n\t expires = new Date(expires);\r\n\t }\r\n\t\r\n\t if (expires && !Cookies._isValidDate(expires)) {\r\n\t throw new Error('`expires` parameter cannot be converted to a valid Date instance');\r\n\t }\r\n\t\r\n\t return expires;\r\n\t };\r\n\t\r\n\t Cookies._generateCookieString = function (key, value, options) {\r\n\t key = key.replace(/[^#$&+\\^`|]/g, encodeURIComponent);\r\n\t key = key.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\r\n\t value = (value + '').replace(/[^!#$&-+\\--:<-\\[\\]-~]/g, encodeURIComponent);\r\n\t options = options || {};\r\n\t\r\n\t var cookieString = key + '=' + value;\r\n\t cookieString += options.path ? ';path=' + options.path : '';\r\n\t cookieString += options.domain ? ';domain=' + options.domain : '';\r\n\t cookieString += options.expires ? ';expires=' + options.expires.toUTCString() : '';\r\n\t cookieString += options.secure ? ';secure' : '';\r\n\t\r\n\t return cookieString;\r\n\t };\r\n\t\r\n\t Cookies._getCacheFromString = function (documentCookie) {\r\n\t var cookieCache = {};\r\n\t var cookiesArray = documentCookie ? documentCookie.split('; ') : [];\r\n\t\r\n\t for (var i = 0; i < cookiesArray.length; i++) {\r\n\t var cookieKvp = Cookies._getKeyValuePairFromCookieString(cookiesArray[i]);\r\n\t\r\n\t if (cookieCache[Cookies._cacheKeyPrefix + cookieKvp.key] === undefined) {\r\n\t cookieCache[Cookies._cacheKeyPrefix + cookieKvp.key] = cookieKvp.value;\r\n\t }\r\n\t }\r\n\t\r\n\t return cookieCache;\r\n\t };\r\n\t\r\n\t Cookies._getKeyValuePairFromCookieString = function (cookieString) {\r\n\t // \"=\" is a valid character in a cookie value according to RFC6265, so cannot `split('=')`\r\n\t var separatorIndex = cookieString.indexOf('=');\r\n\t\r\n\t // IE omits the \"=\" when the cookie value is an empty string\r\n\t separatorIndex = separatorIndex < 0 ? cookieString.length : separatorIndex;\r\n\t\r\n\t var key = cookieString.substr(0, separatorIndex);\r\n\t var decodedKey;\r\n\t try {\r\n\t decodedKey = decodeURIComponent(key);\r\n\t } catch (e) {\r\n\t if (console && typeof console.error === 'function') {\r\n\t console.error('Could not decode cookie with key \"' + key + '\"', e);\r\n\t }\r\n\t }\r\n\t \r\n\t return {\r\n\t key: decodedKey,\r\n\t value: cookieString.substr(separatorIndex + 1) // Defer decoding value until accessed\r\n\t };\r\n\t };\r\n\t\r\n\t Cookies._renewCache = function () {\r\n\t Cookies._cache = Cookies._getCacheFromString(Cookies._document.cookie);\r\n\t Cookies._cachedDocumentCookie = Cookies._document.cookie;\r\n\t };\r\n\t\r\n\t Cookies._areEnabled = function () {\r\n\t var testKey = 'cookies.js';\r\n\t var areEnabled = Cookies.set(testKey, 1).get(testKey) === '1';\r\n\t Cookies.expire(testKey);\r\n\t return areEnabled;\r\n\t };\r\n\t\r\n\t Cookies.enabled = Cookies._areEnabled();\r\n\t\r\n\t return Cookies;\r\n\t };\r\n\t var cookiesExport = (global && typeof global.document === 'object') ? factory(global) : factory;\r\n\t\r\n\t // AMD support\r\n\t if (true) {\r\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return cookiesExport; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t // CommonJS/Node.js support\r\n\t } else if (typeof exports === 'object') {\r\n\t // Support Node.js specific `module.exports` (which can be a function)\r\n\t if (typeof module === 'object' && typeof module.exports === 'object') {\r\n\t exports = module.exports = cookiesExport;\r\n\t }\r\n\t // But always support CommonJS module 1.1.1 spec (`exports` cannot be a function)\r\n\t exports.Cookies = cookiesExport;\r\n\t } else {\r\n\t global.Cookies = cookiesExport;\r\n\t }\r\n\t})(typeof window === 'undefined' ? this : window);\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// this hashing algorithm is as found in some version of Google Analytics\n\t/* jshint ignore:start */\n\tvar sha = __webpack_require__(12);\n\tfunction hash(d) {\n\t var a = 1, c = 0, h, o;\n\t if (d) {\n\t a = 0;\n\t for (h = d[\"length\"] - 1; h >= 0; h--) {\n\t o = d.charCodeAt(h);\n\t a = (a << 6 & 268435455) + o + (o << 14);\n\t c = a & 266338304;\n\t a = c != 0 ? a ^ c >> 21 : a\n\t }\n\t }\n\t return a\n\t};\n\t\n\tmodule.exports = {\n\t domainHash : hash,\n\t sessionHash : sha,\n\t userHash : sha\n\t}; \n\t\n\t/* jshint ignore:end */\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t/*\n\t * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n\t * in FIPS 180-1\n\t * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t * Distributed under the BSD License\n\t * See http://pajhome.org.uk/crypt/md5 for details.\n\t */\n\t\n\t/*\n\t * Configurable variables. You may need to tweak these to be compatible with\n\t * the server-side, but the defaults work in most cases.\n\t */\n\tvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\n\tvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\t\n\t/*\n\t * These are the functions you'll usually want to call\n\t * They take string arguments and return either hex or base-64 encoded strings\n\t */\n\tfunction hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\n\tfunction b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\n\tfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\n\tfunction hex_hmac_sha1(k, d)\n\t { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\n\tfunction b64_hmac_sha1(k, d)\n\t { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\n\tfunction any_hmac_sha1(k, d, e)\n\t { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\t\n\t/*\n\t * Perform a simple self-test to see if the VM is working\n\t */\n\tfunction sha1_vm_test()\n\t{\n\t return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\n\t}\n\t\n\t/*\n\t * Calculate the SHA1 of a raw string\n\t */\n\tfunction rstr_sha1(s)\n\t{\n\t return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\n\t}\n\t\n\t/*\n\t * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n\t */\n\tfunction rstr_hmac_sha1(key, data)\n\t{\n\t var bkey = rstr2binb(key);\n\t if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\n\t\n\t var ipad = Array(16), opad = Array(16);\n\t for(var i = 0; i < 16; i++)\n\t {\n\t ipad[i] = bkey[i] ^ 0x36363636;\n\t opad[i] = bkey[i] ^ 0x5C5C5C5C;\n\t }\n\t\n\t var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n\t return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\n\t}\n\t\n\t/*\n\t * Convert a raw string to a hex string\n\t */\n\tfunction rstr2hex(input)\n\t{\n\t try { hexcase } catch(e) { hexcase=0; }\n\t var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n\t var output = \"\";\n\t var x;\n\t for(var i = 0; i < input.length; i++)\n\t {\n\t x = input.charCodeAt(i);\n\t output += hex_tab.charAt((x >>> 4) & 0x0F)\n\t + hex_tab.charAt( x & 0x0F);\n\t }\n\t return output;\n\t}\n\t\n\t/*\n\t * Convert a raw string to a base-64 string\n\t */\n\tfunction rstr2b64(input)\n\t{\n\t try { b64pad } catch(e) { b64pad=''; }\n\t var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\t var output = \"\";\n\t var len = input.length;\n\t for(var i = 0; i < len; i += 3)\n\t {\n\t var triplet = (input.charCodeAt(i) << 16)\n\t | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)\n\t | (i + 2 < len ? input.charCodeAt(i+2) : 0);\n\t for(var j = 0; j < 4; j++)\n\t {\n\t if(i * 8 + j * 6 > input.length * 8) output += b64pad;\n\t else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);\n\t }\n\t }\n\t return output;\n\t}\n\t\n\t/*\n\t * Convert a raw string to an arbitrary string encoding\n\t */\n\tfunction rstr2any(input, encoding)\n\t{\n\t var divisor = encoding.length;\n\t var remainders = Array();\n\t var i, q, x, quotient;\n\t\n\t /* Convert to an array of 16-bit big-endian values, forming the dividend */\n\t var dividend = Array(Math.ceil(input.length / 2));\n\t for(i = 0; i < dividend.length; i++)\n\t {\n\t dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n\t }\n\t\n\t /*\n\t * Repeatedly perform a long division. The binary array forms the dividend,\n\t * the length of the encoding is the divisor. Once computed, the quotient\n\t * forms the dividend for the next step. We stop when the dividend is zero.\n\t * All remainders are stored for later use.\n\t */\n\t while(dividend.length > 0)\n\t {\n\t quotient = Array();\n\t x = 0;\n\t for(i = 0; i < dividend.length; i++)\n\t {\n\t x = (x << 16) + dividend[i];\n\t q = Math.floor(x / divisor);\n\t x -= q * divisor;\n\t if(quotient.length > 0 || q > 0)\n\t quotient[quotient.length] = q;\n\t }\n\t remainders[remainders.length] = x;\n\t dividend = quotient;\n\t }\n\t\n\t /* Convert the remainders to the output string */\n\t var output = \"\";\n\t for(i = remainders.length - 1; i >= 0; i--)\n\t output += encoding.charAt(remainders[i]);\n\t\n\t /* Append leading zero equivalents */\n\t var full_length = Math.ceil(input.length * 8 /\n\t (Math.log(encoding.length) / Math.log(2)))\n\t for(i = output.length; i < full_length; i++)\n\t output = encoding[0] + output;\n\t\n\t return output;\n\t}\n\t\n\t/*\n\t * Encode a string as utf-8.\n\t * For efficiency, this assumes the input is valid utf-16.\n\t */\n\tfunction str2rstr_utf8(input)\n\t{\n\t var output = \"\";\n\t var i = -1;\n\t var x, y;\n\t\n\t while(++i < input.length)\n\t {\n\t /* Decode utf-16 surrogate pairs */\n\t x = input.charCodeAt(i);\n\t y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n\t if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)\n\t {\n\t x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n\t i++;\n\t }\n\t\n\t /* Encode output as utf-8 */\n\t if(x <= 0x7F)\n\t output += String.fromCharCode(x);\n\t else if(x <= 0x7FF)\n\t output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),\n\t 0x80 | ( x & 0x3F));\n\t else if(x <= 0xFFFF)\n\t output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n\t 0x80 | ((x >>> 6 ) & 0x3F),\n\t 0x80 | ( x & 0x3F));\n\t else if(x <= 0x1FFFFF)\n\t output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n\t 0x80 | ((x >>> 12) & 0x3F),\n\t 0x80 | ((x >>> 6 ) & 0x3F),\n\t 0x80 | ( x & 0x3F));\n\t }\n\t return output;\n\t}\n\t\n\t/*\n\t * Encode a string as utf-16\n\t */\n\tfunction str2rstr_utf16le(input)\n\t{\n\t var output = \"\";\n\t for(var i = 0; i < input.length; i++)\n\t output += String.fromCharCode( input.charCodeAt(i) & 0xFF,\n\t (input.charCodeAt(i) >>> 8) & 0xFF);\n\t return output;\n\t}\n\t\n\tfunction str2rstr_utf16be(input)\n\t{\n\t var output = \"\";\n\t for(var i = 0; i < input.length; i++)\n\t output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n\t input.charCodeAt(i) & 0xFF);\n\t return output;\n\t}\n\t\n\t/*\n\t * Convert a raw string to an array of big-endian words\n\t * Characters >255 have their high-byte silently ignored.\n\t */\n\tfunction rstr2binb(input)\n\t{\n\t var output = Array(input.length >> 2);\n\t for(var i = 0; i < output.length; i++)\n\t output[i] = 0;\n\t for(var i = 0; i < input.length * 8; i += 8)\n\t output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n\t return output;\n\t}\n\t\n\t/*\n\t * Convert an array of big-endian words to a string\n\t */\n\tfunction binb2rstr(input)\n\t{\n\t var output = \"\";\n\t for(var i = 0; i < input.length * 32; i += 8)\n\t output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);\n\t return output;\n\t}\n\t\n\t/*\n\t * Calculate the SHA-1 of an array of big-endian words, and a bit length\n\t */\n\tfunction binb_sha1(x, len)\n\t{\n\t /* append padding */\n\t x[len >> 5] |= 0x80 << (24 - len % 32);\n\t x[((len + 64 >> 9) << 4) + 15] = len;\n\t\n\t var w = Array(80);\n\t var a = 1732584193;\n\t var b = -271733879;\n\t var c = -1732584194;\n\t var d = 271733878;\n\t var e = -1009589776;\n\t\n\t for(var i = 0; i < x.length; i += 16)\n\t {\n\t var olda = a;\n\t var oldb = b;\n\t var oldc = c;\n\t var oldd = d;\n\t var olde = e;\n\t\n\t for(var j = 0; j < 80; j++)\n\t {\n\t if(j < 16) w[j] = x[i + j];\n\t else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);\n\t var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n\t safe_add(safe_add(e, w[j]), sha1_kt(j)));\n\t e = d;\n\t d = c;\n\t c = bit_rol(b, 30);\n\t b = a;\n\t a = t;\n\t }\n\t\n\t a = safe_add(a, olda);\n\t b = safe_add(b, oldb);\n\t c = safe_add(c, oldc);\n\t d = safe_add(d, oldd);\n\t e = safe_add(e, olde);\n\t }\n\t return Array(a, b, c, d, e);\n\t\n\t}\n\t\n\t/*\n\t * Perform the appropriate triplet combination function for the current\n\t * iteration\n\t */\n\tfunction sha1_ft(t, b, c, d)\n\t{\n\t if(t < 20) return (b & c) | ((~b) & d);\n\t if(t < 40) return b ^ c ^ d;\n\t if(t < 60) return (b & c) | (b & d) | (c & d);\n\t return b ^ c ^ d;\n\t}\n\t\n\t/*\n\t * Determine the appropriate additive constant for the current iteration\n\t */\n\tfunction sha1_kt(t)\n\t{\n\t return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n\t (t < 60) ? -1894007588 : -899497514;\n\t}\n\t\n\t/*\n\t * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n\t * to work around bugs in some JS interpreters.\n\t */\n\tfunction safe_add(x, y)\n\t{\n\t var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n\t var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n\t return (msw << 16) | (lsw & 0xFFFF);\n\t}\n\t\n\t/*\n\t * Bitwise rotate a 32-bit number to the left.\n\t */\n\tfunction bit_rol(num, cnt)\n\t{\n\t return (num << cnt) | (num >>> (32 - cnt));\n\t}\n\t\n\tmodule.exports = hex_sha1;\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\tgetNumber : function(){\n\t\t\treturn Math.round(Math.random() * new Date());\n\t\t}\n\t};\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t/*\\\n\t|*|\n\t|*| :: cookies.js ::\n\t|*|\n\t|*| A complete cookies reader/writer framework with full unicode support.\n\t|*|\n\t|*| Revision #1 - September 4, 2014\n\t|*|\n\t|*| https://developer.mozilla.org/en-US/docs/Web/API/document.cookie\n\t|*| https://developer.mozilla.org/User:fusionchess\n\t|*|\n\t|*| This framework is released under the GNU Public License, version 3 or later.\n\t|*| http://www.gnu.org/licenses/gpl-3.0-standalone.html\n\t|*|\n\t|*| Syntaxes:\n\t|*|\n\t|*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])\n\t|*| * docCookies.getItem(name)\n\t|*| * docCookies.removeItem(name[, path[, domain]])\n\t|*| * docCookies.hasItem(name)\n\t|*| * docCookies.keys()\n\t|*|\n\t\\*/\n\t\n\tvar docCookies = {\n\t getItem: function (sKey) {\n\t if (!sKey) { return null; }\n\t return decodeURIComponent(document.cookie.replace(new RegExp(\"(?:(?:^|.*;)\\\\s*\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"), \"$1\")) || null;\n\t },\n\t setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {\n\t if (!sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test(sKey)) { return false; }\n\t var sExpires = \"\";\n\t if (vEnd) {\n\t switch (vEnd.constructor) {\n\t case Number:\n\t sExpires = vEnd === Infinity ? \"; expires=Fri, 31 Dec 9999 23:59:59 GMT\" : \"; max-age=\" + vEnd;\n\t break;\n\t case String:\n\t sExpires = \"; expires=\" + vEnd;\n\t break;\n\t case Date:\n\t sExpires = \"; expires=\" + vEnd.toUTCString();\n\t break;\n\t }\n\t }\n\t document.cookie = encodeURIComponent(sKey) + \"=\" + encodeURIComponent(sValue) + sExpires + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\") + (bSecure ? \"; secure\" : \"\");\n\t return true;\n\t },\n\t removeItem: function (sKey, sPath, sDomain) {\n\t if (!this.hasItem(sKey)) { return false; }\n\t document.cookie = encodeURIComponent(sKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT\" + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\");\n\t return true;\n\t },\n\t hasItem: function (sKey) {\n\t if (!sKey) { return false; }\n\t return (new RegExp(\"(?:^|;\\\\s*)\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(document.cookie);\n\t },\n\t keys: function () {\n\t var aKeys = document.cookie.replace(/((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, \"\").split(/\\s*(?:\\=[^;]*)?;\\s*/);\n\t for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }\n\t return aKeys;\n\t }\n\t};\n\t\n\tmodule.exports = docCookies;\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar debug = __webpack_require__(8);\n\tvar server = __webpack_require__(16);\n\tvar copyProps = function copyProps(o1, o2) {\n\t for (var key in o2) {\n\t if (o2.hasOwnProperty(key) && o2[key] !== undefined) {\n\t o1[key] = o2[key];\n\t }\n\t }\n\t}\n\tmodule.exports = {\n\t override: function(o1, o2) {\n\t if (!o1 && !o2) return undefined;\n\t if (!o1 && o2) return o2;\n\t if (o1 && !o2) return o1;\n\t var result = {};\n\t copyProps(result, o1);\n\t copyProps(result, o2);\n\t return result;\n\t },\n\t runSafe: function runSafe(fn, msg, retryPeriod, retryCount, cb) {\n\t if (typeof retryCount === 'undefined') {\n\t retryCount = 10;\n\t }\n\t retryPeriod = retryPeriod || 100;\n\t cb = cb || function(){};\n\t try {\n\t fn();\n\t cb();\n\t } catch (e) {\n\t if (retryCount <= 0) {\n\t debug.forceLog('runSafe exception: ', e);\n\t server.submitError(e, { location: 'runSafe', arguments: arguments, description: msg });\n\t cb(e);\n\t } else {\n\t setTimeout(function(){runSafe(fn, msg, retryPeriod, retryCount - 1, cb)}, retryPeriod);\n\t }\n\t }\n\t }\n\t\n\t}\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar r = __webpack_require__(17);\n\tvar debug = __webpack_require__(8);\n\tvar ajax = __webpack_require__(23);\n\tvar features = __webpack_require__(24);\n\tvar formatting = __webpack_require__(25);\n\tvar info = __webpack_require__(26);\n\t\n\tvar pendingSubmission = [], done = true;\n\tvar batchIntervalHandler;\n\t\n\tvar eventPostAddress = '//inbox.activitystream.com/asa';\n\tvar errorPostAddress = '//inbox.activitystream.com/asa/error';\n\t\n\tvar post = function(packet, callback) {\n\t var request = ajax.post(eventPostAddress, 'POST', callback);\n\t request.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8');\n\t request.send(JSON.stringify(packet));\n\t};\n\t\n\tvar submitData = function(data, opts, callback) {\n\t opts = opts || { url: eventPostAddress };\n\t var packet = {\n\t ev: data,\n\t t: formatting.formatDateTime(new Date())\n\t };\n\t\n\t debug.log('submitting data: ', data);\n\t if (features.isExperiment(features.MINI_AJAX)) {\n\t post(packet, function(err, res) {\n\t if (callback) {\n\t callback(err, res);\n\t } else {\n\t if (err) {\n\t debug.log('error on server', err);\n\t } else {\n\t debug.log('server got it');\n\t }\n\t }\n\t });\n\t\n\t } else {\n\t r\n\t .post(opts.url)\n\t .set('Content-Type', 'application/json')\n\t .send(packet)\n\t .end(function(err, res) {\n\t if (callback) {\n\t callback(err, res);\n\t } else {\n\t if (err) {\n\t debug.log('error on server', err);\n\t } else {\n\t debug.log('server got it');\n\t }\n\t }\n\t });\n\t }\n\t}\n\t\n\tvar submitEvent = function(ev, callback) {\n\t if (ev) submitData(ev, { url: eventPostAddress }, callback);\n\t}\n\t\n\tvar submitError = function(err, context, callback) {\n\t if (typeof context === 'function') {\n\t callback = context;\n\t context = {};\n\t }\n\t if (err && (err.code === 22 || err.code === 18)) return;// skipping error 22 and 18 - related to quota storage. it seems related to people browsing in private mode\n\t submitData({ err: err, context: context, v: info.version() }, { url: errorPostAddress }, callback);\n\t}\n\t\n\tvar submitNow = function(ev) {\n\t if (ev instanceof Array) {\n\t for (var i = 0; i < ev.length; i++) {\n\t submitEvent(ev[i]);\n\t }\n\t } else {\n\t submitEvent(ev);\n\t }\n\t};\n\t\n\tvar submitNow2 = function(ev) {\n\t done = false;\n\t submitEvent(ev, function(err, res) {\n\t if (err) {\n\t debug.log('error on server', err);\n\t } else {\n\t pendingSubmission.splice(0, ev.length);\n\t debug.log('server got it');\n\t }\n\t done = true;\n\t });\n\t};\n\tvar errorSubmitter;\n\tvar eventSubmitter;\n\tvar setDefaultSubmitters = function() {\n\t errorSubmitter = submitError;\n\t eventSubmitter = submitNow;\n\t}\n\tsetDefaultSubmitters();\n\tmodule.exports = {\n\t submitError: errorSubmitter,\n\t submitEvent: eventSubmitter,\n\t batchEvent: function(e) {\n\t pendingSubmission.push(e);\n\t },\n\t batchOn: function() {\n\t batchIntervalHandler = setInterval(function batchProcessor() {\n\t try {\n\t if (pendingSubmission.length > 0 && done) {\n\t var batchSize = Math.min(pendingSubmission.length, 10);\n\t submitNow2(pendingSubmission.slice(0, batchSize));\n\t }\n\t } catch (e) {\n\t debug.log('exception submitting', e);\n\t }\n\t }, 400);\n\t },\n\t batchOff: function() {\n\t if (!batchIntervalHandler) {\n\t debug.log('cannot batch off, it is not on');\n\t } else {\n\t clearInterval(batchIntervalHandler);\n\t }\n\t },\n\t override: function overrideSubmits(submitEv, submitErr) {\n\t errorSubmitter = submitErr || errorSubmitter;\n\t eventSubmitter = submitEv || eventSubmitter;\n\t },\n\t reset: setDefaultSubmitters\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar Emitter = __webpack_require__(18);\n\tvar reduce = __webpack_require__(19);\n\tvar requestBase = __webpack_require__(20);\n\tvar isObject = __webpack_require__(21);\n\t\n\t/**\n\t * Root reference for iframes.\n\t */\n\t\n\tvar root;\n\tif (typeof window !== 'undefined') { // Browser window\n\t root = window;\n\t} else if (typeof self !== 'undefined') { // Web Worker\n\t root = self;\n\t} else { // Other environments\n\t root = this;\n\t}\n\t\n\t/**\n\t * Noop.\n\t */\n\t\n\tfunction noop(){};\n\t\n\t/**\n\t * Check if `obj` is a host object,\n\t * we don't want to serialize these :)\n\t *\n\t * TODO: future proof, move to compoent land\n\t *\n\t * @param {Object} obj\n\t * @return {Boolean}\n\t * @api private\n\t */\n\t\n\tfunction isHost(obj) {\n\t var str = {}.toString.call(obj);\n\t\n\t switch (str) {\n\t case '[object File]':\n\t case '[object Blob]':\n\t case '[object FormData]':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t}\n\t\n\t/**\n\t * Expose `request`.\n\t */\n\t\n\tvar request = module.exports = __webpack_require__(22).bind(null, Request);\n\t\n\t/**\n\t * Determine XHR.\n\t */\n\t\n\trequest.getXHR = function () {\n\t if (root.XMLHttpRequest\n\t && (!root.location || 'file:' != root.location.protocol\n\t || !root.ActiveXObject)) {\n\t return new XMLHttpRequest;\n\t } else {\n\t try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n\t try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n\t try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n\t try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n\t }\n\t return false;\n\t};\n\t\n\t/**\n\t * Removes leading and trailing whitespace, added to support IE.\n\t *\n\t * @param {String} s\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tvar trim = ''.trim\n\t ? function(s) { return s.trim(); }\n\t : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\t\n\t/**\n\t * Serialize the given `obj`.\n\t *\n\t * @param {Object} obj\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction serialize(obj) {\n\t if (!isObject(obj)) return obj;\n\t var pairs = [];\n\t for (var key in obj) {\n\t if (null != obj[key]) {\n\t pushEncodedKeyValuePair(pairs, key, obj[key]);\n\t }\n\t }\n\t return pairs.join('&');\n\t}\n\t\n\t/**\n\t * Helps 'serialize' with serializing arrays.\n\t * Mutates the pairs array.\n\t *\n\t * @param {Array} pairs\n\t * @param {String} key\n\t * @param {Mixed} val\n\t */\n\t\n\tfunction pushEncodedKeyValuePair(pairs, key, val) {\n\t if (Array.isArray(val)) {\n\t return val.forEach(function(v) {\n\t pushEncodedKeyValuePair(pairs, key, v);\n\t });\n\t }\n\t pairs.push(encodeURIComponent(key)\n\t + '=' + encodeURIComponent(val));\n\t}\n\t\n\t/**\n\t * Expose serialization method.\n\t */\n\t\n\t request.serializeObject = serialize;\n\t\n\t /**\n\t * Parse the given x-www-form-urlencoded `str`.\n\t *\n\t * @param {String} str\n\t * @return {Object}\n\t * @api private\n\t */\n\t\n\tfunction parseString(str) {\n\t var obj = {};\n\t var pairs = str.split('&');\n\t var parts;\n\t var pair;\n\t\n\t for (var i = 0, len = pairs.length; i < len; ++i) {\n\t pair = pairs[i];\n\t parts = pair.split('=');\n\t obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n\t }\n\t\n\t return obj;\n\t}\n\t\n\t/**\n\t * Expose parser.\n\t */\n\t\n\trequest.parseString = parseString;\n\t\n\t/**\n\t * Default MIME type map.\n\t *\n\t * superagent.types.xml = 'application/xml';\n\t *\n\t */\n\t\n\trequest.types = {\n\t html: 'text/html',\n\t json: 'application/json',\n\t xml: 'application/xml',\n\t urlencoded: 'application/x-www-form-urlencoded',\n\t 'form': 'application/x-www-form-urlencoded',\n\t 'form-data': 'application/x-www-form-urlencoded'\n\t};\n\t\n\t/**\n\t * Default serialization map.\n\t *\n\t * superagent.serialize['application/xml'] = function(obj){\n\t * return 'generated xml here';\n\t * };\n\t *\n\t */\n\t\n\t request.serialize = {\n\t 'application/x-www-form-urlencoded': serialize,\n\t 'application/json': JSON.stringify\n\t };\n\t\n\t /**\n\t * Default parsers.\n\t *\n\t * superagent.parse['application/xml'] = function(str){\n\t * return { object parsed from str };\n\t * };\n\t *\n\t */\n\t\n\trequest.parse = {\n\t 'application/x-www-form-urlencoded': parseString,\n\t 'application/json': JSON.parse\n\t};\n\t\n\t/**\n\t * Parse the given header `str` into\n\t * an object containing the mapped fields.\n\t *\n\t * @param {String} str\n\t * @return {Object}\n\t * @api private\n\t */\n\t\n\tfunction parseHeader(str) {\n\t var lines = str.split(/\\r?\\n/);\n\t var fields = {};\n\t var index;\n\t var line;\n\t var field;\n\t var val;\n\t\n\t lines.pop(); // trailing CRLF\n\t\n\t for (var i = 0, len = lines.length; i < len; ++i) {\n\t line = lines[i];\n\t index = line.indexOf(':');\n\t field = line.slice(0, index).toLowerCase();\n\t val = trim(line.slice(index + 1));\n\t fields[field] = val;\n\t }\n\t\n\t return fields;\n\t}\n\t\n\t/**\n\t * Check if `mime` is json or has +json structured syntax suffix.\n\t *\n\t * @param {String} mime\n\t * @return {Boolean}\n\t * @api private\n\t */\n\t\n\tfunction isJSON(mime) {\n\t return /[\\/+]json\\b/.test(mime);\n\t}\n\t\n\t/**\n\t * Return the mime type for the given `str`.\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction type(str){\n\t return str.split(/ *; */).shift();\n\t};\n\t\n\t/**\n\t * Return header field parameters.\n\t *\n\t * @param {String} str\n\t * @return {Object}\n\t * @api private\n\t */\n\t\n\tfunction params(str){\n\t return reduce(str.split(/ *; */), function(obj, str){\n\t var parts = str.split(/ *= */)\n\t , key = parts.shift()\n\t , val = parts.shift();\n\t\n\t if (key && val) obj[key] = val;\n\t return obj;\n\t }, {});\n\t};\n\t\n\t/**\n\t * Initialize a new `Response` with the given `xhr`.\n\t *\n\t * - set flags (.ok, .error, etc)\n\t * - parse header\n\t *\n\t * Examples:\n\t *\n\t * Aliasing `superagent` as `request` is nice:\n\t *\n\t * request = superagent;\n\t *\n\t * We can use the promise-like API, or pass callbacks:\n\t *\n\t * request.get('/').end(function(res){});\n\t * request.get('/', function(res){});\n\t *\n\t * Sending data can be chained:\n\t *\n\t * request\n\t * .post('/user')\n\t * .send({ name: 'tj' })\n\t * .end(function(res){});\n\t *\n\t * Or passed to `.send()`:\n\t *\n\t * request\n\t * .post('/user')\n\t * .send({ name: 'tj' }, function(res){});\n\t *\n\t * Or passed to `.post()`:\n\t *\n\t * request\n\t * .post('/user', { name: 'tj' })\n\t * .end(function(res){});\n\t *\n\t * Or further reduced to a single call for simple cases:\n\t *\n\t * request\n\t * .post('/user', { name: 'tj' }, function(res){});\n\t *\n\t * @param {XMLHTTPRequest} xhr\n\t * @param {Object} options\n\t * @api private\n\t */\n\t\n\tfunction Response(req, options) {\n\t options = options || {};\n\t this.req = req;\n\t this.xhr = this.req.xhr;\n\t // responseText is accessible only if responseType is '' or 'text' and on older browsers\n\t this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n\t ? this.xhr.responseText\n\t : null;\n\t this.statusText = this.req.xhr.statusText;\n\t this.setStatusProperties(this.xhr.status);\n\t this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n\t // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n\t // getResponseHeader still works. so we get content-type even if getting\n\t // other headers fails.\n\t this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n\t this.setHeaderProperties(this.header);\n\t this.body = this.req.method != 'HEAD'\n\t ? this.parseBody(this.text ? this.text : this.xhr.response)\n\t : null;\n\t}\n\t\n\t/**\n\t * Get case-insensitive `field` value.\n\t *\n\t * @param {String} field\n\t * @return {String}\n\t * @api public\n\t */\n\t\n\tResponse.prototype.get = function(field){\n\t return this.header[field.toLowerCase()];\n\t};\n\t\n\t/**\n\t * Set header related properties:\n\t *\n\t * - `.type` the content type without params\n\t *\n\t * A response of \"Content-Type: text/plain; charset=utf-8\"\n\t * will provide you with a `.type` of \"text/plain\".\n\t *\n\t * @param {Object} header\n\t * @api private\n\t */\n\t\n\tResponse.prototype.setHeaderProperties = function(header){\n\t // content-type\n\t var ct = this.header['content-type'] || '';\n\t this.type = type(ct);\n\t\n\t // params\n\t var obj = params(ct);\n\t for (var key in obj) this[key] = obj[key];\n\t};\n\t\n\t/**\n\t * Parse the given body `str`.\n\t *\n\t * Used for auto-parsing of bodies. Parsers\n\t * are defined on the `superagent.parse` object.\n\t *\n\t * @param {String} str\n\t * @return {Mixed}\n\t * @api private\n\t */\n\t\n\tResponse.prototype.parseBody = function(str){\n\t var parse = request.parse[this.type];\n\t if (!parse && isJSON(this.type)) {\n\t parse = request.parse['application/json'];\n\t }\n\t return parse && str && (str.length || str instanceof Object)\n\t ? parse(str)\n\t : null;\n\t};\n\t\n\t/**\n\t * Set flags such as `.ok` based on `status`.\n\t *\n\t * For example a 2xx response will give you a `.ok` of __true__\n\t * whereas 5xx will be __false__ and `.error` will be __true__. The\n\t * `.clientError` and `.serverError` are also available to be more\n\t * specific, and `.statusType` is the class of error ranging from 1..5\n\t * sometimes useful for mapping respond colors etc.\n\t *\n\t * \"sugar\" properties are also defined for common cases. Currently providing:\n\t *\n\t * - .noContent\n\t * - .badRequest\n\t * - .unauthorized\n\t * - .notAcceptable\n\t * - .notFound\n\t *\n\t * @param {Number} status\n\t * @api private\n\t */\n\t\n\tResponse.prototype.setStatusProperties = function(status){\n\t // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n\t if (status === 1223) {\n\t status = 204;\n\t }\n\t\n\t var type = status / 100 | 0;\n\t\n\t // status / class\n\t this.status = this.statusCode = status;\n\t this.statusType = type;\n\t\n\t // basics\n\t this.info = 1 == type;\n\t this.ok = 2 == type;\n\t this.clientError = 4 == type;\n\t this.serverError = 5 == type;\n\t this.error = (4 == type || 5 == type)\n\t ? this.toError()\n\t : false;\n\t\n\t // sugar\n\t this.accepted = 202 == status;\n\t this.noContent = 204 == status;\n\t this.badRequest = 400 == status;\n\t this.unauthorized = 401 == status;\n\t this.notAcceptable = 406 == status;\n\t this.notFound = 404 == status;\n\t this.forbidden = 403 == status;\n\t};\n\t\n\t/**\n\t * Return an `Error` representative of this response.\n\t *\n\t * @return {Error}\n\t * @api public\n\t */\n\t\n\tResponse.prototype.toError = function(){\n\t var req = this.req;\n\t var method = req.method;\n\t var url = req.url;\n\t\n\t var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n\t var err = new Error(msg);\n\t err.status = this.status;\n\t err.method = method;\n\t err.url = url;\n\t\n\t return err;\n\t};\n\t\n\t/**\n\t * Expose `Response`.\n\t */\n\t\n\trequest.Response = Response;\n\t\n\t/**\n\t * Initialize a new `Request` with the given `method` and `url`.\n\t *\n\t * @param {String} method\n\t * @param {String} url\n\t * @api public\n\t */\n\t\n\tfunction Request(method, url) {\n\t var self = this;\n\t this._query = this._query || [];\n\t this.method = method;\n\t this.url = url;\n\t this.header = {}; // preserves header name case\n\t this._header = {}; // coerces header names to lowercase\n\t this.on('end', function(){\n\t var err = null;\n\t var res = null;\n\t\n\t try {\n\t res = new Response(self);\n\t } catch(e) {\n\t err = new Error('Parser is unable to parse the response');\n\t err.parse = true;\n\t err.original = e;\n\t // issue #675: return the raw response if the response parsing fails\n\t err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n\t // issue #876: return the http status code if the response parsing fails\n\t err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n\t return self.callback(err);\n\t }\n\t\n\t self.emit('response', res);\n\t\n\t if (err) {\n\t return self.callback(err, res);\n\t }\n\t\n\t if (res.status >= 200 && res.status < 300) {\n\t return self.callback(err, res);\n\t }\n\t\n\t var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n\t new_err.original = err;\n\t new_err.response = res;\n\t new_err.status = res.status;\n\t\n\t self.callback(new_err, res);\n\t });\n\t}\n\t\n\t/**\n\t * Mixin `Emitter` and `requestBase`.\n\t */\n\t\n\tEmitter(Request.prototype);\n\tfor (var key in requestBase) {\n\t Request.prototype[key] = requestBase[key];\n\t}\n\t\n\t/**\n\t * Abort the request, and clear potential timeout.\n\t *\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\tRequest.prototype.abort = function(){\n\t if (this.aborted) return;\n\t this.aborted = true;\n\t this.xhr && this.xhr.abort();\n\t this.clearTimeout();\n\t this.emit('abort');\n\t return this;\n\t};\n\t\n\t/**\n\t * Set Content-Type to `type`, mapping values from `request.types`.\n\t *\n\t * Examples:\n\t *\n\t * superagent.types.xml = 'application/xml';\n\t *\n\t * request.post('/')\n\t * .type('xml')\n\t * .send(xmlstring)\n\t * .end(callback);\n\t *\n\t * request.post('/')\n\t * .type('application/xml')\n\t * .send(xmlstring)\n\t * .end(callback);\n\t *\n\t * @param {String} type\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.type = function(type){\n\t this.set('Content-Type', request.types[type] || type);\n\t return this;\n\t};\n\t\n\t/**\n\t * Set responseType to `val`. Presently valid responseTypes are 'blob' and \n\t * 'arraybuffer'.\n\t *\n\t * Examples:\n\t *\n\t * req.get('/')\n\t * .responseType('blob')\n\t * .end(callback);\n\t *\n\t * @param {String} val\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.responseType = function(val){\n\t this._responseType = val;\n\t return this;\n\t};\n\t\n\t/**\n\t * Set Accept to `type`, mapping values from `request.types`.\n\t *\n\t * Examples:\n\t *\n\t * superagent.types.json = 'application/json';\n\t *\n\t * request.get('/agent')\n\t * .accept('json')\n\t * .end(callback);\n\t *\n\t * request.get('/agent')\n\t * .accept('application/json')\n\t * .end(callback);\n\t *\n\t * @param {String} accept\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.accept = function(type){\n\t this.set('Accept', request.types[type] || type);\n\t return this;\n\t};\n\t\n\t/**\n\t * Set Authorization field value with `user` and `pass`.\n\t *\n\t * @param {String} user\n\t * @param {String} pass\n\t * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.auth = function(user, pass, options){\n\t if (!options) {\n\t options = {\n\t type: 'basic'\n\t }\n\t }\n\t\n\t switch (options.type) {\n\t case 'basic':\n\t var str = btoa(user + ':' + pass);\n\t this.set('Authorization', 'Basic ' + str);\n\t break;\n\t\n\t case 'auto':\n\t this.username = user;\n\t this.password = pass;\n\t break;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t* Add query-string `val`.\n\t*\n\t* Examples:\n\t*\n\t* request.get('/shoes')\n\t* .query('size=10')\n\t* .query({ color: 'blue' })\n\t*\n\t* @param {Object|String} val\n\t* @return {Request} for chaining\n\t* @api public\n\t*/\n\t\n\tRequest.prototype.query = function(val){\n\t if ('string' != typeof val) val = serialize(val);\n\t if (val) this._query.push(val);\n\t return this;\n\t};\n\t\n\t/**\n\t * Queue the given `file` as an attachment to the specified `field`,\n\t * with optional `filename`.\n\t *\n\t * ``` js\n\t * request.post('/upload')\n\t * .attach(new Blob(['hey!'], { type: \"text/html\"}))\n\t * .end(callback);\n\t * ```\n\t *\n\t * @param {String} field\n\t * @param {Blob|File} file\n\t * @param {String} filename\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.attach = function(field, file, filename){\n\t this._getFormData().append(field, file, filename || file.name);\n\t return this;\n\t};\n\t\n\tRequest.prototype._getFormData = function(){\n\t if (!this._formData) {\n\t this._formData = new root.FormData();\n\t }\n\t return this._formData;\n\t};\n\t\n\t/**\n\t * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n\t * an object is given.\n\t *\n\t * Examples:\n\t *\n\t * // manual json\n\t * request.post('/user')\n\t * .type('json')\n\t * .send('{\"name\":\"tj\"}')\n\t * .end(callback)\n\t *\n\t * // auto json\n\t * request.post('/user')\n\t * .send({ name: 'tj' })\n\t * .end(callback)\n\t *\n\t * // manual x-www-form-urlencoded\n\t * request.post('/user')\n\t * .type('form')\n\t * .send('name=tj')\n\t * .end(callback)\n\t *\n\t * // auto x-www-form-urlencoded\n\t * request.post('/user')\n\t * .type('form')\n\t * .send({ name: 'tj' })\n\t * .end(callback)\n\t *\n\t * // defaults to x-www-form-urlencoded\n\t * request.post('/user')\n\t * .send('name=tobi')\n\t * .send('species=ferret')\n\t * .end(callback)\n\t *\n\t * @param {String|Object} data\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.send = function(data){\n\t var obj = isObject(data);\n\t var type = this._header['content-type'];\n\t\n\t // merge\n\t if (obj && isObject(this._data)) {\n\t for (var key in data) {\n\t this._data[key] = data[key];\n\t }\n\t } else if ('string' == typeof data) {\n\t if (!type) this.type('form');\n\t type = this._header['content-type'];\n\t if ('application/x-www-form-urlencoded' == type) {\n\t this._data = this._data\n\t ? this._data + '&' + data\n\t : data;\n\t } else {\n\t this._data = (this._data || '') + data;\n\t }\n\t } else {\n\t this._data = data;\n\t }\n\t\n\t if (!obj || isHost(data)) return this;\n\t if (!type) this.type('json');\n\t return this;\n\t};\n\t\n\t/**\n\t * @deprecated\n\t */\n\tResponse.prototype.parse = function serialize(fn){\n\t if (root.console) {\n\t console.warn(\"Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0\");\n\t }\n\t this.serialize(fn);\n\t return this;\n\t};\n\t\n\tResponse.prototype.serialize = function serialize(fn){\n\t this._parser = fn;\n\t return this;\n\t};\n\t\n\t/**\n\t * Invoke the callback with `err` and `res`\n\t * and handle arity check.\n\t *\n\t * @param {Error} err\n\t * @param {Response} res\n\t * @api private\n\t */\n\t\n\tRequest.prototype.callback = function(err, res){\n\t var fn = this._callback;\n\t this.clearTimeout();\n\t fn(err, res);\n\t};\n\t\n\t/**\n\t * Invoke callback with x-domain error.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.crossDomainError = function(){\n\t var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n\t err.crossDomain = true;\n\t\n\t err.status = this.status;\n\t err.method = this.method;\n\t err.url = this.url;\n\t\n\t this.callback(err);\n\t};\n\t\n\t/**\n\t * Invoke callback with timeout error.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.timeoutError = function(){\n\t var timeout = this._timeout;\n\t var err = new Error('timeout of ' + timeout + 'ms exceeded');\n\t err.timeout = timeout;\n\t this.callback(err);\n\t};\n\t\n\t/**\n\t * Enable transmission of cookies with x-domain requests.\n\t *\n\t * Note that for this to work the origin must not be\n\t * using \"Access-Control-Allow-Origin\" with a wildcard,\n\t * and also must set \"Access-Control-Allow-Credentials\"\n\t * to \"true\".\n\t *\n\t * @api public\n\t */\n\t\n\tRequest.prototype.withCredentials = function(){\n\t this._withCredentials = true;\n\t return this;\n\t};\n\t\n\t/**\n\t * Initiate request, invoking callback `fn(res)`\n\t * with an instanceof `Response`.\n\t *\n\t * @param {Function} fn\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.end = function(fn){\n\t var self = this;\n\t var xhr = this.xhr = request.getXHR();\n\t var query = this._query.join('&');\n\t var timeout = this._timeout;\n\t var data = this._formData || this._data;\n\t\n\t // store callback\n\t this._callback = fn || noop;\n\t\n\t // state change\n\t xhr.onreadystatechange = function(){\n\t if (4 != xhr.readyState) return;\n\t\n\t // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n\t // result in the error \"Could not complete the operation due to error c00c023f\"\n\t var status;\n\t try { status = xhr.status } catch(e) { status = 0; }\n\t\n\t if (0 == status) {\n\t if (self.timedout) return self.timeoutError();\n\t if (self.aborted) return;\n\t return self.crossDomainError();\n\t }\n\t self.emit('end');\n\t };\n\t\n\t // progress\n\t var handleProgress = function(e){\n\t if (e.total > 0) {\n\t e.percent = e.loaded / e.total * 100;\n\t }\n\t e.direction = 'download';\n\t self.emit('progress', e);\n\t };\n\t if (this.hasListeners('progress')) {\n\t xhr.onprogress = handleProgress;\n\t }\n\t try {\n\t if (xhr.upload && this.hasListeners('progress')) {\n\t xhr.upload.onprogress = handleProgress;\n\t }\n\t } catch(e) {\n\t // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n\t // Reported here:\n\t // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n\t }\n\t\n\t // timeout\n\t if (timeout && !this._timer) {\n\t this._timer = setTimeout(function(){\n\t self.timedout = true;\n\t self.abort();\n\t }, timeout);\n\t }\n\t\n\t // querystring\n\t if (query) {\n\t query = request.serializeObject(query);\n\t this.url += ~this.url.indexOf('?')\n\t ? '&' + query\n\t : '?' + query;\n\t }\n\t\n\t // initiate request\n\t if (this.username && this.password) {\n\t xhr.open(this.method, this.url, true, this.username, this.password);\n\t } else {\n\t xhr.open(this.method, this.url, true);\n\t }\n\t\n\t // CORS\n\t if (this._withCredentials) xhr.withCredentials = true;\n\t\n\t // body\n\t if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n\t // serialize stuff\n\t var contentType = this._header['content-type'];\n\t var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n\t if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n\t if (serialize) data = serialize(data);\n\t }\n\t\n\t // set header fields\n\t for (var field in this.header) {\n\t if (null == this.header[field]) continue;\n\t xhr.setRequestHeader(field, this.header[field]);\n\t }\n\t\n\t if (this._responseType) {\n\t xhr.responseType = this._responseType;\n\t }\n\t\n\t // send stuff\n\t this.emit('request', this);\n\t\n\t // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n\t // We need null here if data is undefined\n\t xhr.send(typeof data !== 'undefined' ? data : null);\n\t return this;\n\t};\n\t\n\t\n\t/**\n\t * Expose `Request`.\n\t */\n\t\n\trequest.Request = Request;\n\t\n\t/**\n\t * GET `url` with optional callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed|Function} data or fn\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.get = function(url, data, fn){\n\t var req = request('GET', url);\n\t if ('function' == typeof data) fn = data, data = null;\n\t if (data) req.query(data);\n\t if (fn) req.end(fn);\n\t return req;\n\t};\n\t\n\t/**\n\t * HEAD `url` with optional callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed|Function} data or fn\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.head = function(url, data, fn){\n\t var req = request('HEAD', url);\n\t if ('function' == typeof data) fn = data, data = null;\n\t if (data) req.send(data);\n\t if (fn) req.end(fn);\n\t return req;\n\t};\n\t\n\t/**\n\t * DELETE `url` with optional callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\tfunction del(url, fn){\n\t var req = request('DELETE', url);\n\t if (fn) req.end(fn);\n\t return req;\n\t};\n\t\n\trequest['del'] = del;\n\trequest['delete'] = del;\n\t\n\t/**\n\t * PATCH `url` with optional `data` and callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed} data\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.patch = function(url, data, fn){\n\t var req = request('PATCH', url);\n\t if ('function' == typeof data) fn = data, data = null;\n\t if (data) req.send(data);\n\t if (fn) req.end(fn);\n\t return req;\n\t};\n\t\n\t/**\n\t * POST `url` with optional `data` and callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed} data\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.post = function(url, data, fn){\n\t var req = request('POST', url);\n\t if ('function' == typeof data) fn = data, data = null;\n\t if (data) req.send(data);\n\t if (fn) req.end(fn);\n\t return req;\n\t};\n\t\n\t/**\n\t * PUT `url` with optional `data` and callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed|Function} data or fn\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.put = function(url, data, fn){\n\t var req = request('PUT', url);\n\t if ('function' == typeof data) fn = data, data = null;\n\t if (data) req.send(data);\n\t if (fn) req.end(fn);\n\t return req;\n\t};\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\r\n\t/**\r\n\t * Expose `Emitter`.\r\n\t */\r\n\t\r\n\tif (true) {\r\n\t module.exports = Emitter;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Initialize a new `Emitter`.\r\n\t *\r\n\t * @api public\r\n\t */\r\n\t\r\n\tfunction Emitter(obj) {\r\n\t if (obj) return mixin(obj);\r\n\t};\r\n\t\r\n\t/**\r\n\t * Mixin the emitter properties.\r\n\t *\r\n\t * @param {Object} obj\r\n\t * @return {Object}\r\n\t * @api private\r\n\t */\r\n\t\r\n\tfunction mixin(obj) {\r\n\t for (var key in Emitter.prototype) {\r\n\t obj[key] = Emitter.prototype[key];\r\n\t }\r\n\t return obj;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Listen on the given `event` with `fn`.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Function} fn\r\n\t * @return {Emitter}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.on =\r\n\tEmitter.prototype.addEventListener = function(event, fn){\r\n\t this._callbacks = this._callbacks || {};\r\n\t (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n\t .push(fn);\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Adds an `event` listener that will be invoked a single\r\n\t * time then automatically removed.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Function} fn\r\n\t * @return {Emitter}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.once = function(event, fn){\r\n\t function on() {\r\n\t this.off(event, on);\r\n\t fn.apply(this, arguments);\r\n\t }\r\n\t\r\n\t on.fn = fn;\r\n\t this.on(event, on);\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Remove the given callback for `event` or all\r\n\t * registered callbacks.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Function} fn\r\n\t * @return {Emitter}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.off =\r\n\tEmitter.prototype.removeListener =\r\n\tEmitter.prototype.removeAllListeners =\r\n\tEmitter.prototype.removeEventListener = function(event, fn){\r\n\t this._callbacks = this._callbacks || {};\r\n\t\r\n\t // all\r\n\t if (0 == arguments.length) {\r\n\t this._callbacks = {};\r\n\t return this;\r\n\t }\r\n\t\r\n\t // specific event\r\n\t var callbacks = this._callbacks['$' + event];\r\n\t if (!callbacks) return this;\r\n\t\r\n\t // remove all handlers\r\n\t if (1 == arguments.length) {\r\n\t delete this._callbacks['$' + event];\r\n\t return this;\r\n\t }\r\n\t\r\n\t // remove specific handler\r\n\t var cb;\r\n\t for (var i = 0; i < callbacks.length; i++) {\r\n\t cb = callbacks[i];\r\n\t if (cb === fn || cb.fn === fn) {\r\n\t callbacks.splice(i, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Emit `event` with the given args.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Mixed} ...\r\n\t * @return {Emitter}\r\n\t */\r\n\t\r\n\tEmitter.prototype.emit = function(event){\r\n\t this._callbacks = this._callbacks || {};\r\n\t var args = [].slice.call(arguments, 1)\r\n\t , callbacks = this._callbacks['$' + event];\r\n\t\r\n\t if (callbacks) {\r\n\t callbacks = callbacks.slice(0);\r\n\t for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n\t callbacks[i].apply(this, args);\r\n\t }\r\n\t }\r\n\t\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Return array of callbacks for `event`.\r\n\t *\r\n\t * @param {String} event\r\n\t * @return {Array}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.listeners = function(event){\r\n\t this._callbacks = this._callbacks || {};\r\n\t return this._callbacks['$' + event] || [];\r\n\t};\r\n\t\r\n\t/**\r\n\t * Check if this emitter has `event` handlers.\r\n\t *\r\n\t * @param {String} event\r\n\t * @return {Boolean}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.hasListeners = function(event){\r\n\t return !! this.listeners(event).length;\r\n\t};\r\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t\n\t/**\n\t * Reduce `arr` with `fn`.\n\t *\n\t * @param {Array} arr\n\t * @param {Function} fn\n\t * @param {Mixed} initial\n\t *\n\t * TODO: combatible error handling?\n\t */\n\t\n\tmodule.exports = function(arr, fn, initial){ \n\t var idx = 0;\n\t var len = arr.length;\n\t var curr = arguments.length == 3\n\t ? initial\n\t : arr[idx++];\n\t\n\t while (idx < len) {\n\t curr = fn.call(null, curr, arr[idx], ++idx, arr);\n\t }\n\t \n\t return curr;\n\t};\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module of mixed-in functions shared between node and client code\n\t */\n\tvar isObject = __webpack_require__(21);\n\t\n\t/**\n\t * Clear previous timeout.\n\t *\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\texports.clearTimeout = function _clearTimeout(){\n\t this._timeout = 0;\n\t clearTimeout(this._timer);\n\t return this;\n\t};\n\t\n\t/**\n\t * Force given parser\n\t *\n\t * Sets the body parser no matter type.\n\t *\n\t * @param {Function}\n\t * @api public\n\t */\n\t\n\texports.parse = function parse(fn){\n\t this._parser = fn;\n\t return this;\n\t};\n\t\n\t/**\n\t * Set timeout to `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\texports.timeout = function timeout(ms){\n\t this._timeout = ms;\n\t return this;\n\t};\n\t\n\t/**\n\t * Faux promise support\n\t *\n\t * @param {Function} fulfill\n\t * @param {Function} reject\n\t * @return {Request}\n\t */\n\t\n\texports.then = function then(fulfill, reject) {\n\t return this.end(function(err, res) {\n\t err ? reject(err) : fulfill(res);\n\t });\n\t}\n\t\n\t/**\n\t * Allow for extension\n\t */\n\t\n\texports.use = function use(fn) {\n\t fn(this);\n\t return this;\n\t}\n\t\n\t\n\t/**\n\t * Get request header `field`.\n\t * Case-insensitive.\n\t *\n\t * @param {String} field\n\t * @return {String}\n\t * @api public\n\t */\n\t\n\texports.get = function(field){\n\t return this._header[field.toLowerCase()];\n\t};\n\t\n\t/**\n\t * Get case-insensitive header `field` value.\n\t * This is a deprecated internal API. Use `.get(field)` instead.\n\t *\n\t * (getHeader is no longer used internally by the superagent code base)\n\t *\n\t * @param {String} field\n\t * @return {String}\n\t * @api private\n\t * @deprecated\n\t */\n\t\n\texports.getHeader = exports.get;\n\t\n\t/**\n\t * Set header `field` to `val`, or multiple fields with one object.\n\t * Case-insensitive.\n\t *\n\t * Examples:\n\t *\n\t * req.get('/')\n\t * .set('Accept', 'application/json')\n\t * .set('X-API-Key', 'foobar')\n\t * .end(callback);\n\t *\n\t * req.get('/')\n\t * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n\t * .end(callback);\n\t *\n\t * @param {String|Object} field\n\t * @param {String} val\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\texports.set = function(field, val){\n\t if (isObject(field)) {\n\t for (var key in field) {\n\t this.set(key, field[key]);\n\t }\n\t return this;\n\t }\n\t this._header[field.toLowerCase()] = val;\n\t this.header[field] = val;\n\t return this;\n\t};\n\t\n\t/**\n\t * Remove header `field`.\n\t * Case-insensitive.\n\t *\n\t * Example:\n\t *\n\t * req.get('/')\n\t * .unset('User-Agent')\n\t * .end(callback);\n\t *\n\t * @param {String} field\n\t */\n\texports.unset = function(field){\n\t delete this._header[field.toLowerCase()];\n\t delete this.header[field];\n\t return this;\n\t};\n\t\n\t/**\n\t * Write the field `name` and `val` for \"multipart/form-data\"\n\t * request bodies.\n\t *\n\t * ``` js\n\t * request.post('/upload')\n\t * .field('foo', 'bar')\n\t * .end(callback);\n\t * ```\n\t *\n\t * @param {String} name\n\t * @param {String|Blob|File|Buffer|fs.ReadStream} val\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\texports.field = function(name, val) {\n\t this._getFormData().append(name, val);\n\t return this;\n\t};\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Check if `obj` is an object.\n\t *\n\t * @param {Object} obj\n\t * @return {Boolean}\n\t * @api private\n\t */\n\t\n\tfunction isObject(obj) {\n\t return null != obj && 'object' == typeof obj;\n\t}\n\t\n\tmodule.exports = isObject;\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t// The node and browser modules expose versions of this with the\n\t// appropriate constructor function bound as first argument\n\t/**\n\t * Issue a request:\n\t *\n\t * Examples:\n\t *\n\t * request('GET', '/users').end(callback)\n\t * request('/users').end(callback)\n\t * request('/users', callback)\n\t *\n\t * @param {String} method\n\t * @param {String|Function} url or callback\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\tfunction request(RequestConstructor, method, url) {\n\t // callback\n\t if ('function' == typeof url) {\n\t return new RequestConstructor('GET', method).end(url);\n\t }\n\t\n\t // url first\n\t if (2 == arguments.length) {\n\t return new RequestConstructor('GET', method);\n\t }\n\t\n\t return new RequestConstructor(method, url);\n\t}\n\t\n\tmodule.exports = request;\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t post: /**\n\t * Make a X-Domain request to url and callback.\n\t *\n\t * @param url {String}\n\t * @param method {String} HTTP verb ('GET', 'POST', 'DELETE', etc.)\n\t * @param data {String} request body\n\t * @param callback {Function} to callback on completion\n\t * @param errback {Function} to callback on error\n\t */\n\t function xdr(url, method, callback) {\n\t var req;\n\t\n\t if (XMLHttpRequest) {\n\t req = new XMLHttpRequest();\n\t\n\t if ('withCredentials' in req) {\n\t req.open(method, url, true);\n\t req.onerror = function(e){callback(e, null);};\n\t req.onreadystatechange = function () {\n\t if (req.readyState === 4) {\n\t if (req.status >= 200 && req.status < 400) {\n\t callback(null,req.responseText);\n\t } else {\n\t callback(new Error('Response returned with non-OK status'));\n\t }\n\t }\n\t };\n\t return req;\n\t }\n\t } else if (XDomainRequest) {\n\t req = new XDomainRequest();\n\t req.open(method, url);\n\t req.onerror = function(e){callback(e, null);};\n\t req.onload = function () {\n\t callback(null,req.responseText);\n\t };\n\t return req;\n\t } else {\n\t throw new Error('CORS not supported');\n\t }\n\t }\n\t}\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar user = __webpack_require__(9);\n\tvar experiments = {};\n\tmodule.exports = {\n\t\tdefineExperiment : function(name, percentage){\n\t if (typeof percentage === 'boolean'){\n\t if (percentage) experiments[name] = percentage; \n\t } else \n\t\t\texperiments[name] = (user.getUserHash() % 100) <= percentage;\n\t\t},\n\t\tisExperiment : function(name){\n\t\t\tvar exp = experiments[name];\n\t\t\treturn !!exp;\n\t\t},\n\t\tclearExperiments : function(){\n\t\t\texperiments = {};\t\n\t\t},\n\t\texperimentsLive : function(){\n\t\t\tvar result = [];\n\t\t\tfor (var exp in experiments) {\n\t\t\t\tif (experiments.hasOwnProperty(exp)) {\n\t\t\t\t\tif (experiments[exp]) result.push(exp);\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result.join('.');\n\t\t},\n\t\tMINI_AJAX : 'miniAjax'\t\n\t};\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t \n\t formatDateTime: function (time) {\n\t function pad(number) {\n\t if (number < 10) {\n\t return '0' + number;\n\t }\n\t return number;\n\t }\n\t function timezone(time) {\n\t var hours = pad(Math.abs(Math.floor(time / 60)));\n\t var minutes = pad(Math.abs(time % 60));\n\t var sign = time > 0 ? '-' : '+';\n\t return sign + hours + ':' + minutes;\n\t }\n\t\n\t return '' + time.getFullYear() +\n\t '-' + pad(time.getMonth() + 1) +\n\t '-' + pad(time.getDate()) +\n\t 'T' + pad(time.getHours()) +\n\t ':' + pad(time.getMinutes()) +\n\t ':' + pad(time.getSeconds()) +\n\t '.' + (time.getMilliseconds() / 1000).toFixed(3).slice(2, 5) +\n\t timezone(time.getTimezoneOffset());\n\t }\n\t\n\t}\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar features = __webpack_require__(24);\n\tvar major = 1,\n\t\tminor = 1,\n\t\tbuild = 77;\n\tmodule.exports = {\n\t\tmajor : major,\n\t\tminor: minor,\n\t\tbuild: build,\n\t\tversion : function(){\n\t\t\tvar experiments = '-'+features.experimentsLive();\n\t\t\tif (experiments === '-') experiments = '';\n\t\t\treturn [major, minor, build].join('.') + experiments;}\n\t};\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar session = __webpack_require__(7);\n\tvar microdata = __webpack_require__(28);\n\tvar autoTrack = __webpack_require__(6);\n\tvar debug = __webpack_require__(8);\n\tvar event = __webpack_require__(30);\n\tvar server = __webpack_require__(16);\n\tvar Cookies = __webpack_require__(10);\n\tvar parseuri = __webpack_require__(5);\n\tvar user = __webpack_require__(9);\n\tvar getCampaign = __webpack_require__(31);\n\tvar getReferrer = __webpack_require__(32);\n\tvar browser = __webpack_require__(2);\n\t\n\tvar postboxMessages = ['product.viewed', 'product.interest', 'customer.account.provided', 'order.reviewed', 'order.delivery.selected', 'purchase.completed', 'payment.failed', 'product.carted', 'product.uncarted', 'product.unavailable', 'product.searched'];\n\t\n\tmodule.exports = function inbox(transport) {\n\t var serviceProviders = [];\n\t var sessionResumed = false;\n\t return function () {\n\t try {\n\t if (!Cookies.enabled) return; // let's avoid browsers without cookies for now\n\t\n\t if (arguments[0] == 'session') {\n\t session.customSession(arguments[1], arguments[2], arguments[3])\n\t return;\n\t }\n\t\n\t if (arguments[0] == 'connectedPartners') {\n\t autoTrack.links(arguments[1]);\n\t return;\n\t }\n\t if (arguments[0] == 'serviceProviders') {\n\t serviceProviders = arguments[1];\n\t return;\n\t }\n\t if (arguments[0] == 'tenantId') {\n\t browser.window.asaId = arguments[1];\n\t return;\n\t }\n\t if (arguments[0] == 'debug') {\n\t debug.setDebugMode(arguments[1]);\n\t return;\n\t }\n\t\n\t if (arguments[0] == 'transformer') {\n\t microdata.setMapper(arguments[1]);\n\t return;\n\t }\n\t\n\t var campaign = getCampaign(browser.document.location, browser.document.referrer);\n\t var referrer = getReferrer(browser.document.location, browser.document.referrer, serviceProviders);\n\t if (!session.hasSession()) {\n\t debug.log('no session, starting a new one');\n\t session.createSession({ campaign: campaign, referrer: referrer });\n\t sessionResumed = true;\n\t transport(event.package('sessionStarted', { newBrowser: user.getAndResetNewUserStatus() }));\n\t } else {\n\t var referrerAuth = parseuri(browser.document.referrer).authority;\n\t var currentAuth = parseuri(browser.document.location).authority;\n\t if ((referrerAuth != currentAuth && serviceProviders.indexOf(referrerAuth) === -1)) {\n\t session.updateTimeout({ campaign: campaign, referrer: referrer });\n\t debug.log('session resumed');\n\t sessionResumed = true;\n\t transport(event.package('sessionResumed'));\n\t }\n\t }\n\t \n\t if (postboxMessages.indexOf(arguments[0]) !== -1) {\n\t transport(event.newpackage.apply(event, arguments));\n\t } else\n\t transport(event.package.apply(event, arguments));\n\t } catch (e) {\n\t debug.forceLog('inbox exception:', e);\n\t server.submitError(e, { location: 'processing inbox message', arguments: arguments });\n\t }\n\t };\n\t};\n\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// var jq = $;\n\tvar jq = __webpack_require__(29);\n\tvar debug = __webpack_require__(8);\n\t\n\tvar collectReferencedProperties = function (element, item) {\n\t\tvar refString = element.attr('itemref');\n\t\tif (typeof refString !== 'undefined') {\n\t\t\tvar refs = refString.split(' ');\n\t\t\tfor (var i = 0; i < refs.length; i++) {\n\t\t\t\tvar ref = refs[i];\n\t\t\t\tvar refItem = jq('#' + ref);\n\t\t\t\tif (refItem.length === 1){\n\t\t\t\t\tcollectProperties(refItem.get(0), item);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdebug.log('missing metadata element', ref);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\t\n\tvar collectComplexProperty = function (element) {\n\t\tvar item = {\n\t\t\t\"type\": element.attr(\"itemtype\"),\n\t\t\t\"properties\": {}\n\t\t};\n\t\tcollectReferencedProperties(element, item);\n\t\tcollectProperties(element, item);\n\t\treturn item;\n\t};\n\t\n\tvar collectSimpleProperty = function (el) {\n\t\tvar tag = el.prop('tagName');\n\t\tswitch (tag) {\n\t\t\tcase 'TIME': return el.attr('datetime');\n\t\t\tcase 'A':\n\t\t\tcase 'LINK':\n\t\t\t\treturn el.attr('href');\n\t\t\tdefault:\n\t\t\t\treturn el.prop(\"content\") || el.text() || el.attr(\"src\");\n\t\t}\n\t\n\t};\n\t\n\tvar collectProperties = function (el, item) {\n\t\tel.children().each(function (_, c) {\n\t\t\tvar child = jq(c);\n\t\t\tvar prop = child.attr('itemprop');\n\t\t\tif (typeof prop === 'string') {\n\t\t\t\tif (typeof child.attr('itemscope') !== 'undefined') {\n\t\t\t\t\titem.properties[prop] = collectComplexProperty(child);\n\t\t\t\t} else {\n\t\t\t\t\titem.properties[prop] = collectSimpleProperty(child);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (typeof child.attr('itemscope') == 'undefined') {\n\t\t\t\tcollectProperties(child, item);\n\t\t\t}\n\t\t});\n\t};\n\t\n\tvar findTopLevelItems = function (el) {\n\t\tif (!el) return undefined; \n\t\tvar items = [];\n\t\tif (typeof el === 'string') { el = jq('#'+el).get(0); }\n\t\telse if (typeof el === 'object' && typeof el.tagName === 'string') { el = jq(el); }\n\t\telse return {};\n\t\n\t\tvar processElement = function (e) {\n\t\t\tvar el = jq(e);\n\t\t\tvar itemScope = el.attr('itemscope');\n\t\t\tvar itemProp = el.attr('itemprop');\n\t\t\tif (typeof itemScope !== 'undefined') {\n\t\t\t\tif (typeof itemProp !== 'undefined') {\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\titems.push(theOneMapper(collectComplexProperty(el), el));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tel.children().each(function (_, c) {\n\t\t\t\t\tprocessElement(c);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\n\t\tprocessElement(el);\n\t\n\t\tif (items.length === 0) return {};\n\t\tif (items.length === 1) return items[0];\n\t\treturn {'__items' : items};\n\t};\n\t\n\tvar extractFromHead = function () {\n\t\tvar meta = {};\n\t\tjq('head > meta[property^=\"og:\"]').each(function () { var m = jq(this); meta[m.attr('property')] = m.attr('content'); });\n\t\tjq('head > meta[name=\"keywords\"]').each(function () { var m = jq(this); meta[\"keywords\"] = m.attr('content'); });\n\t\treturn theOneMapper(meta);\n\t};\n\tvar noMapper = function(m) {return m;};\n\tvar theOneMapper = noMapper;\n\tvar callbackWrapper = function callbackWrapper(cb){\n\t\treturn function(meta, el){\n\t\t\ttry{\n\t\t\t\treturn cb(meta, el);\n\t\t\t} catch(e){\n\t\t\t\treturn meta;\n\t\t\t}\n\t\t}\n\t}\n\tmodule.exports = {\n\t\textract: findTopLevelItems,\n\t\textractFromHead: extractFromHead,\n\t\tsetMapper : function(mapper){\n\t\t\ttheOneMapper = callbackWrapper(mapper);\n\t\t},\n\t\tnoMapper : noMapper\n\t};\n\n/***/ },\n/* 29 */\n/***/ function(module, exports) {\n\n\t\n\t// Prototype of our jQuery killer ;)\n\tfunction DOMElement() {\n\t}\n\t\n\tDOMElement.prototype.text = function text() {\n\t return this._element.textContent;\n\t};\n\t\n\tDOMElement.prototype.attr = function attr(name) {\n\t // emulating the jQuery behaviour\n\t var attrValue = this._element.getAttribute('' + name);\n\t if (attrValue === null) return undefined;\n\t else\n\t return attrValue;\n\t};\n\t\n\tDOMElement.prototype.prop = function prop(name) {\n\t return this._element[name];\n\t};\n\t\n\tDOMElement.prototype.children = function children() {\n\t\n\t var c = this._element.children,\n\t $doms = [],\n\t i, n = c.length;\n\t\n\t for (i = 0; i < n; i++)\n\t $doms[i] = $DOM(c[i]);\n\t\n\t return new DOMElements($doms);\n\t};\n\t\n\tfunction DOMElements(els) {\n\t this._els = els;\n\t this.length = els.length;\n\t}\n\t\n\tDOMElements.prototype.each = function each(callback) {\n\t for (var i = 0; i < this._els.length; i++) {\n\t var element = this._els[i];\n\t callback.call(element, i, element);\n\t }\n\t};\n\t\n\tDOMElements.prototype.get = function get(index) {\n\t return this._els[index];\n\t};\n\t\n\t// query parameter is either an element id or a css-style selector\n\tvar $DOM = module.exports = function $DOM(query) {\n\t\n\t if (!query || !(typeof query === 'string' || query instanceof Element || query instanceof DOMElement || query instanceof DOMElements)) {\n\t throw new Error('Invalid argument provided:' + query);\n\t }\n\t\n\t if (query instanceof DOMElement || query instanceof DOMElements) return query;\n\t\n\t if (query instanceof Element) {\n\t var wrapper = new DOMElement();\n\t wrapper._element = query;\n\t return wrapper;\n\t }\n\t\n\t query = ('' + query).trim();\n\t\n\t var elem, elems = [], i, n;\n\t\n\t try {\n\t if (query[0] === '#') { \n\t elem = document.getElementById(query.substr(1));\n\t if (elem) elem = [elem]; else elem = [];\n\t } else {\n\t elem = document.querySelectorAll(query);\n\t }\n\t n = elem.length;\n\t\n\t for (i = 0; i < n; i++)\n\t elems.push($DOM(elem[i]));\n\t\n\t return new DOMElements(elems);\n\t } catch (exception) {\n\t throw new Error('Invalid selector: ' + query);\n\t }\n\t};\n\t\n\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar microdata = __webpack_require__(28);\n\tvar session = __webpack_require__(7);\n\tvar info = __webpack_require__(26);\n\tvar user = __webpack_require__(9);\n\tvar _ = __webpack_require__(15);\n\tvar parseUri = __webpack_require__(5);\n\tvar Cookies = __webpack_require__(10);\n\tvar formatting = __webpack_require__(25);\n\tvar getCampaign = __webpack_require__(31);\n\tvar browser = __webpack_require__(2);\n\t\n\tvar DOMMeta = function (o) {\n\t if (o.length < 2) return false;\n\t return (typeof o[1] === 'object' && typeof o[1].tagName === 'undefined') ? o[1] : false;\n\t};\n\t\n\tvar pageview = function () {\n\t var title = browser.document.title;\n\t var location = browser.window.location.protocol + '//' + browser.window.location.host + browser.window.location.pathname + browser.window.location.hash + browser.window.location.search;\n\t return { type: 'pageview', location: location, title: title };\n\t};\n\t\n\tvar sectionentered = function (section, page) {\n\t return { type: 'section_entered', section: section };\n\t};\n\t\n\tvar custom = function (event) {\n\t var baseEvent = pageview();\n\t baseEvent.type = 'custom';\n\t baseEvent.event = event;\n\t return baseEvent;\n\t};\n\t\n\tvar gatherMetaInfo = function gatherMetaInfo(a) {\n\t var event = a[0];\n\t var eventBody = {};\n\t if (event) {\n\t switch (event.trim()) {\n\t case 'pageview':\n\t eventBody = pageview.apply(null, [].slice.call(a, 1));\n\t break;\n\t case 'sectionentered':\n\t eventBody = sectionentered.apply(null, [].slice.call(a, 1));\n\t break;\n\t default:\n\t eventBody = custom.apply(null, a);\n\t }\n\t return eventBody;\n\t }\n\t throw new Error('Upsi! There is something wrong with this event:', a);\n\t};\n\t\n\t\n\tvar gatherSystemInfo = function (e) {\n\t var sess = session.getSession();\n\t e.t = formatting.formatDateTime(new Date());\n\t e.session = sess.id;\n\t e.referrer = sess.referrer || '';\n\t var campaign = sess.campaign;\n\t if (campaign) e.campaign = campaign;\n\t e.uid = user.getUserId();\n\t var partnerId = browser.window.sessionStorage.getItem('__as.partner_id');\n\t var partnerSId = browser.window.sessionStorage.getItem('__as.partner_sid');\n\t if (partnerId) {\n\t e.partner_id = partnerId;\n\t }\n\t if (partnerSId) {\n\t e.partner_sid = partnerSId;\n\t }\n\t e.tenant_id = browser.window.asaId;\n\t e.v = info.version();\n\t return e;\n\t};\n\t\n\tvar postboxEvents = function(type, e, meta){\n\t var defaultEventInfo = {\n\t \"type\" : type,\n\t \"occurred\" : meta.t,\n\t \"origin\" : browser.window.location.host,\n\t \"user\" : {\n\t \"did\" : meta.uid,\n\t \"sid\" : meta.session\n\t },\n\t \"page\" : {\n\t \"url\" : browser.window.location.protocol + '//' + browser.window.location.host + browser.window.location.pathname + browser.window.location.hash + browser.window.location.search,\n\t \"referrer\" : meta.referrer\n\t },\n\t \"v\" : meta.v,\n\t \"campaign\" : meta.campaign,\n\t \"tenant\" : meta.tenant_id\n\t };\n\t if (meta.partner_id) defaultEventInfo.partnerId = meta.partner_id;\n\t if (meta.partner_sid) defaultEventInfo.partnerSId = meta.partner_sid;\n\t return _.override(defaultEventInfo, e);\n\t}\n\tmodule.exports = {\n\t newpackage: function newpackages(eventName, eventInfo, extra) {\n\t var meta = gatherMetaInfo(arguments);\n\t meta = gatherSystemInfo(meta);\n\t return postboxEvents(eventName, eventInfo, meta);\n\t },\n\t package: function (eventname, domElement, extra) {\n\t\n\t var event = gatherMetaInfo(arguments);\n\t event = gatherSystemInfo(event);\n\t // if (arguments[0] == 'pageview') {\n\t // return null;\n\t // } else\n\t if (arguments[0] == 'sessionStarted') {\n\t event.meta = microdata.extractFromHead();\n\t if (typeof arguments[1] === 'object') {\n\t event.meta = _.override(event.meta, arguments[1]);\n\t }\n\t } else\n\t if (arguments[0] == 'itemview') {\n\t event.meta = DOMMeta(arguments) || microdata.extract(arguments[1]);\n\t } else\n\t if (arguments[0] == 'sectionentered') {\n\t event.meta = DOMMeta(arguments) || microdata.extract(arguments[1]);\n\t } else {\n\t var meta = undefined;\n\t if (typeof domElement === 'string' || (typeof domElement === 'object' && typeof domElement.tagName !== 'undefined')) {\n\t meta = microdata.extract(domElement);\n\t } else\n\t if (typeof extra === 'undefined' && typeof domElement === 'object') {\n\t extra = domElement;\n\t domElement = null;\n\t }\n\t meta = _.override(meta, extra);\n\t if (meta !== undefined) event.meta = meta;\n\t }\n\t return event;\n\t }\n\t};\n\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar parseUri = __webpack_require__(5);\n\tmodule.exports = function getCampaign(location, referrer) {\n\t var campaignKeys;\n\t referrer = parseUri(referrer);\n\t location = parseUri(location);\n\t if (referrer.queryKey && referrer.queryKey['utm_campaign'])\n\t campaignKeys = campaignKeys || referrer.queryKey;\n\t\n\t if (location.queryKey && location.queryKey['utm_campaign'])\n\t campaignKeys = campaignKeys || location.queryKey;\n\t\n\t if (campaignKeys) {\n\t var campaign = {};\n\t if (campaignKeys.utm_campaign) campaign.campaign = campaignKeys.utm_campaign;\n\t if (campaignKeys.utm_source) campaign.source = campaignKeys.utm_source;\n\t if (campaignKeys.utm_medium) campaign.medium = campaignKeys.utm_medium;\n\t if (campaignKeys.utm_term) campaign.term = campaignKeys.utm_term;\n\t if (campaignKeys.utm_content) campaign.content = campaignKeys.utm_content;\n\t return campaign;\n\t }\n\t return null;\n\t};\n\t\n\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar parseuri = __webpack_require__(5);\n\tmodule.exports = function(location, referrer, serviceProviders) {\n\t if (referrer && referrer.length > 0) {\n\t var referrerAuth = parseuri(referrer).authority;\n\t var currentAuth = parseuri(location).authority;\n\t if (referrerAuth != currentAuth && serviceProviders.indexOf(referrerAuth) === -1) {\n\t return referrer;\n\t }\n\t }\n\t return null;\n\t}\n\t\n\n\n/***/ }\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// asa.js"," \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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ecf226d4b5c9341a6220","(function () {\n require('./boot')();\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 0\n// module chunks = 0","var browser = require('./browser');\nvar runBootSequence = function(bootSequence){\n bootSequence = bootSequence || [];\n if (!(bootSequence instanceof Array)) bootSequence = [bootSequence];\n\n for (var i = 0; i < bootSequence.length; i++) {\n browser.window.asa.apply(null, bootSequence[i]);\n }\n};\n\nrequire('./polyfills')();\n\nmodule.exports = function(bootSequence){\n // var DNT = navigator.doNotTrack || navigator.msDoNotTrack || browser.window.doNotTrack;\n // if (DNT && (DNT === 'yes' || DNT.charAt(0) === '1')) return;\n\tvar partner = require('./partner');\n\tvar autoTrack = require('./auto_track');\n\tvar debug = require('./debug');\n\tvar inbox = require('./inbox');\n\tvar server = require('./server');\n\tvar features = require('./features');\n\n\ttry {\n\t\tvar pendingEvents = [];\n\t\tif ((typeof browser.window.asa !== 'undefined') && (typeof browser.window.asa.q !== 'undefined')) {\n\t\t\tpendingEvents = browser.window.asa.q;\n\t\t}\n\n\t\tbrowser.window.asa = inbox(server.submitEvent);\n\n\t\t// features.defineExperiment(features.MINI_AJAX, 10);\n partner.setPartnerInfo();\n runBootSequence(bootSequence);\n\n\t\tfor (var i = 0; i < pendingEvents.length; i++) {\n\t\t\tbrowser.window.asa.apply(null, pendingEvents[i]);\n\t\t}\n\n\t\t// autoTrack.sections();\n\t} catch (e) {\n\t\tdebug.forceLog('exception during init: ', e);\n server.submitError(e, {location : 'boot script'});\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/boot.js\n// module id = 1\n// module chunks = 0 2","module.exports = {\n window : window,\n document : document \n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser.js\n// module id = 2\n// module chunks = 0 1 2","function installTrimPolyfill() {\n if (!String.prototype.trim) {\n String.prototype.trim = function() {\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\n }\n}\nfunction installEndsWithPolyfill() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n }\n}\nmodule.exports = function() {\n installTrimPolyfill();\n installEndsWithPolyfill();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/polyfills.js\n// module id = 3\n// module chunks = 0 2","var parseUri = require('./parseuri');\nvar browser = require('./browser');\n\nvar updatePartnerInfo = function (){\n\tvar partnerIdKey = '__as.partner_id';\n\tvar partnerSIdKey = '__as.partner_sid';\n\tvar asaPartnerKey = '__asa';\n\tvar uri = parseUri(browser.window.location.href);\n\tvar asaPartnerValue = decodeURIComponent(uri.queryKey.__asa || '').split('|');\n\tvar partnerId;\n\tvar partnerSId;\n\tif (asaPartnerValue) {\n\t\tpartnerId = asaPartnerValue[0];\n\t\tpartnerSId = asaPartnerValue[1];\n\t}\n\n\tif (partnerId){\n\t\tbrowser.window.sessionStorage.setItem(partnerIdKey, partnerId);\n\t} else {\n\t\tbrowser.window.sessionStorage.removeItem(partnerIdKey);\n\t}\n\tif (partnerSId){\n\t\tbrowser.window.sessionStorage.setItem(partnerSIdKey, partnerSId);\n\t} else {\n\t\tbrowser.window.sessionStorage.removeItem(partnerSIdKey);\n\t}\n};\nmodule.exports = {\n\n\tsetPartnerInfo : function(){\n\t\tvar referrer = parseUri(browser.document.referrer).authority;\n\t\tvar currentHost = parseUri(browser.window.location.origin).authority;\n\t\tif (referrer != currentHost){\n\t\t\tupdatePartnerInfo();\n\t\t}\n\t}\n\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/partner.js\n// module id = 4\n// module chunks = 0 2","// parseUri 1.2.2\n// (c) Steven Levithan \n// MIT License\n\nfunction parseUri (str) {\n\tvar\to = parseUri.options,\n\t\tm = o.parser[o.strictMode ? \"strict\" : \"loose\"].exec(str),\n\t\turi = {},\n\t\ti = 14;\n\n\twhile (i--) uri[o.key[i]] = m[i] || \"\";\n\n\turi[o.q.name] = {};\n\turi[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n\t\tif ($1) uri[o.q.name][$1] = $2;\n\t});\n\n\treturn uri;\n}\n\nparseUri.options = {\n\tstrictMode: false,\n\tkey: [\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"],\n\tq: {\n\t\tname: \"queryKey\",\n\t\tparser: /(?:^|&)([^&=]*)=?([^&]*)/g\n\t},\n\tparser: {\n\t\tstrict: /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n\t\tloose: /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/\n\t}\n};\n\nmodule.exports = parseUri;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/parseuri.js\n// module id = 5\n// module chunks = 0 1 2","var session = require('./session');\nvar parseUri = require('./parseuri');\nvar browser = require('./browser');\n\nmodule.exports = {\n\tsections: function () {\n\t\tvar locationHashChanged = function (oldHash, newHash) {\n\t\t\tasa('sectionentered', newHash.substr(1));\n\t\t};\n\t\tvar storedHash = '';\n\t\tbrowser.window.setInterval(function () {\n\t\t\tif (browser.window.location.hash != storedHash) {\n\t\t\t\tvar newHash = browser.window.location.hash;\n\t\t\t\tlocationHashChanged(storedHash, newHash);\n\t\t\t\tstoredHash = newHash;\n\t\t\t}\n\t\t}, 100);\n\t},\n\n\tlinks: function (domains) {\n\t\tvar domainsTracked = domains;\n\t\tvar tracker = function (ev) {\n\t\t\tvar href = ev.target.href;\n\t\t\tif (href) {\n\t\t\t\tvar destination = parseUri(href);\n\t\t\t\tif (domainsTracked.indexOf(destination.authority) > -1) {\n if (!destination.queryKey['__asa']){\n var alreadyHasParams = ev.target.href.indexOf('?') !== -1;\n href = href + (alreadyHasParams ? '&' : '?') + '__asa=' + encodeURIComponent(browser.window.asaId+'|'+session.getSession().id);\n ev.target.href = href;\n }\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tbrowser.document.addEventListener('mousedown', tracker);\n\t\tbrowser.document.addEventListener('keyup', tracker);\n\t\tbrowser.document.addEventListener('touchstart', tracker);\n\t}\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/auto_track.js\n// module id = 6\n// module chunks = 0 1 2","var debug = require('./debug');\nvar user = require('./user');\nvar randomness = require('./randomness');\nvar hash = require('./domain_hash').sessionHash;\nvar Cookies = require('./cookies');\nvar _ = require('./utils');\n\n\nvar persistence = {\n get: function(id) {\n try {\n return Cookies.getItem(id);\n } catch (e) {\n throw new Error('Error while trying to get item from session cookie:' + id);\n }\n },\n set: function(id, value) {\n try {\n return Cookies.setItem(id, value, Infinity, '/');\n } catch (e) {\n throw new Error('Error while trying to set item to session cookie: \"' + id + '\" <- ' + value);\n }\n }\n}\n\nvar store = {\n hasItem: function(name) {\n var item = persistence.get(name);\n return item;\n },\n getItem: function(name) {\n return persistence.get(name);\n },\n setItem: function(name, value) {\n persistence.set(name, value);\n },\n};\n\nvar sessionStore = store;\n\nvar SESSION_EXPIRE_TIMEOUT = 30 * 60 * 1000;\nvar SESSION_COOKIE_NAME = '__asa_session';\n\nvar builtinSessionManager = {\n hasSession: function() {\n var item = sessionStore.hasItem(SESSION_COOKIE_NAME);\n try{\n return item && JSON.parse(item).t > (1 * new Date()); \n } catch(e) {\n return false;\n }\n },\n\n createSession: function(sessionData) {\n sessionStore.setItem(SESSION_COOKIE_NAME, JSON.stringify(_.override(sessionData, { id: user.getDomainId() + '.' + hash(user.getUserId() + '.' + randomness.getNumber()), t: ((1 * new Date()) + SESSION_EXPIRE_TIMEOUT) })));\n },\n\n getSession: function() {\n return JSON.parse(sessionStore.getItem(SESSION_COOKIE_NAME));\n },\n \n updateTimeout: function updateTimeout(sessionData){\n var session = this.getSession();\n var sessionId = session.id;\n session = _.override(session, sessionData);\n session.t = ((1 * new Date()) + SESSION_EXPIRE_TIMEOUT);\n session.id = sessionId;\n \n sessionStore.setItem(SESSION_COOKIE_NAME, JSON.stringify(session));\n }\n\n};\nvar providedSessionManager = function(hasSessions, getSession, createSession) {\n return {\n hasSession: function() {\n return hasSessions();\n },\n\n createSession: function() {\n createSession();\n },\n\n getSession: function() {\n return getSession();\n }\n };\n};\nvar sessionManager = builtinSessionManager;\nmodule.exports = {\n getSession: function() {\n return sessionManager.getSession();\n },\n hasSession: function() {\n return !!(sessionManager.hasSession());\n },\n createSession: function(sessionData) {\n sessionManager.createSession(sessionData);\n },\n customSession: function(hasSessions, getSession, createSession) {\n sessionManager = providedSessionManager(hasSessions, getSession, createSession);\n },\n resetSessionMgmt: function resetSessionMgmt() {\n sessionManager = builtinSessionManager;\n },\n updateTimeout: function updateTimeout(sessionData){\n sessionManager.updateTimeout(sessionData);\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/session.js\n// module id = 7\n// module chunks = 0 1 2","// old ie\nif (typeof console === 'undefined') {\n\twindow.console = {};\n}\nif (typeof console.log === 'undefined'){\n\twindow.console.log = function(){};\n}\n\nvar noLog = function noLog() { };\nvar doLog = function doLog() {\n\t[].unshift.call(arguments, 'asa.js:');\n\tconsole.log.apply(console, arguments);\n};\nvar me = module.exports = {\n\tlog: noLog,\n\tsetDebugMode: function (on) {\n\t\tme.log = on ? doLog : noLog;\n\t},\n\tforceLog:doLog\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/debug.js\n// module id = 8\n// module chunks = 0 1 2","// var cookies = require('./cookies');\nvar Cookies = require('cookies-js');\nvar domainHash = require('./domain_hash').domainHash;\nvar userHash = require('./domain_hash').userHash;\nvar randomness = require('./randomness');\nvar USER_ID_COOKIE = '__as_user';\nvar browser = require('./browser');\n\nvar generateUserId = function () {\n\treturn domainHash(browser.window.location.host) + '.' + userHash('' + randomness.getNumber());\n};\n\nvar userCreated = false;\n\nvar setUserId = function() {\n var userId = generateUserId();\n Cookies.set(USER_ID_COOKIE, userId, {expires: Infinity, path : '/'});\n // return userId; \n}\n\nvar getUserId = function () {\n\tif (!Cookies.get(USER_ID_COOKIE)) {\n userCreated = true;\n setUserId();\n\t}\n\n var userId = Cookies.get(USER_ID_COOKIE);\n if (userId.length > 70 || userId.length < 40) {\n // we need proper migrations here\n setUserId();\n userId = Cookies.get(USER_ID_COOKIE);\n }\n\n\treturn userId;\n};\n\nmodule.exports = {\n\tgetUserId: getUserId,\n\tgetDomainId: function () {\n\t\treturn domainHash(browser.window.location.host);\n\t},\n\tgetUserHash: function () {\n\t\treturn domainHash(getUserId().split('.')[1]);\n\t},\n getAndResetNewUserStatus : function(){\n if (userCreated) {\n userCreated = false;\n return true;\n } else \n return false;\n }\n \n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/user.js\n// module id = 9\n// module chunks = 0 1 2","/*\r\n * Cookies.js - 1.2.3\r\n * https://github.com/ScottHamper/Cookies\r\n *\r\n * This is free and unencumbered software released into the public domain.\r\n */\r\n(function (global, undefined) {\r\n 'use strict';\r\n\r\n var factory = function (window) {\r\n if (typeof window.document !== 'object') {\r\n throw new Error('Cookies.js requires a `window` with a `document` object');\r\n }\r\n\r\n var Cookies = function (key, value, options) {\r\n return arguments.length === 1 ?\r\n Cookies.get(key) : Cookies.set(key, value, options);\r\n };\r\n\r\n // Allows for setter injection in unit tests\r\n Cookies._document = window.document;\r\n\r\n // Used to ensure cookie keys do not collide with\r\n // built-in `Object` properties\r\n Cookies._cacheKeyPrefix = 'cookey.'; // Hurr hurr, :)\r\n \r\n Cookies._maxExpireDate = new Date('Fri, 31 Dec 9999 23:59:59 UTC');\r\n\r\n Cookies.defaults = {\r\n path: '/',\r\n secure: false\r\n };\r\n\r\n Cookies.get = function (key) {\r\n if (Cookies._cachedDocumentCookie !== Cookies._document.cookie) {\r\n Cookies._renewCache();\r\n }\r\n \r\n var value = Cookies._cache[Cookies._cacheKeyPrefix + key];\r\n\r\n return value === undefined ? undefined : decodeURIComponent(value);\r\n };\r\n\r\n Cookies.set = function (key, value, options) {\r\n options = Cookies._getExtendedOptions(options);\r\n options.expires = Cookies._getExpiresDate(value === undefined ? -1 : options.expires);\r\n\r\n Cookies._document.cookie = Cookies._generateCookieString(key, value, options);\r\n\r\n return Cookies;\r\n };\r\n\r\n Cookies.expire = function (key, options) {\r\n return Cookies.set(key, undefined, options);\r\n };\r\n\r\n Cookies._getExtendedOptions = function (options) {\r\n return {\r\n path: options && options.path || Cookies.defaults.path,\r\n domain: options && options.domain || Cookies.defaults.domain,\r\n expires: options && options.expires || Cookies.defaults.expires,\r\n secure: options && options.secure !== undefined ? options.secure : Cookies.defaults.secure\r\n };\r\n };\r\n\r\n Cookies._isValidDate = function (date) {\r\n return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());\r\n };\r\n\r\n Cookies._getExpiresDate = function (expires, now) {\r\n now = now || new Date();\r\n\r\n if (typeof expires === 'number') {\r\n expires = expires === Infinity ?\r\n Cookies._maxExpireDate : new Date(now.getTime() + expires * 1000);\r\n } else if (typeof expires === 'string') {\r\n expires = new Date(expires);\r\n }\r\n\r\n if (expires && !Cookies._isValidDate(expires)) {\r\n throw new Error('`expires` parameter cannot be converted to a valid Date instance');\r\n }\r\n\r\n return expires;\r\n };\r\n\r\n Cookies._generateCookieString = function (key, value, options) {\r\n key = key.replace(/[^#$&+\\^`|]/g, encodeURIComponent);\r\n key = key.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\r\n value = (value + '').replace(/[^!#$&-+\\--:<-\\[\\]-~]/g, encodeURIComponent);\r\n options = options || {};\r\n\r\n var cookieString = key + '=' + value;\r\n cookieString += options.path ? ';path=' + options.path : '';\r\n cookieString += options.domain ? ';domain=' + options.domain : '';\r\n cookieString += options.expires ? ';expires=' + options.expires.toUTCString() : '';\r\n cookieString += options.secure ? ';secure' : '';\r\n\r\n return cookieString;\r\n };\r\n\r\n Cookies._getCacheFromString = function (documentCookie) {\r\n var cookieCache = {};\r\n var cookiesArray = documentCookie ? documentCookie.split('; ') : [];\r\n\r\n for (var i = 0; i < cookiesArray.length; i++) {\r\n var cookieKvp = Cookies._getKeyValuePairFromCookieString(cookiesArray[i]);\r\n\r\n if (cookieCache[Cookies._cacheKeyPrefix + cookieKvp.key] === undefined) {\r\n cookieCache[Cookies._cacheKeyPrefix + cookieKvp.key] = cookieKvp.value;\r\n }\r\n }\r\n\r\n return cookieCache;\r\n };\r\n\r\n Cookies._getKeyValuePairFromCookieString = function (cookieString) {\r\n // \"=\" is a valid character in a cookie value according to RFC6265, so cannot `split('=')`\r\n var separatorIndex = cookieString.indexOf('=');\r\n\r\n // IE omits the \"=\" when the cookie value is an empty string\r\n separatorIndex = separatorIndex < 0 ? cookieString.length : separatorIndex;\r\n\r\n var key = cookieString.substr(0, separatorIndex);\r\n var decodedKey;\r\n try {\r\n decodedKey = decodeURIComponent(key);\r\n } catch (e) {\r\n if (console && typeof console.error === 'function') {\r\n console.error('Could not decode cookie with key \"' + key + '\"', e);\r\n }\r\n }\r\n \r\n return {\r\n key: decodedKey,\r\n value: cookieString.substr(separatorIndex + 1) // Defer decoding value until accessed\r\n };\r\n };\r\n\r\n Cookies._renewCache = function () {\r\n Cookies._cache = Cookies._getCacheFromString(Cookies._document.cookie);\r\n Cookies._cachedDocumentCookie = Cookies._document.cookie;\r\n };\r\n\r\n Cookies._areEnabled = function () {\r\n var testKey = 'cookies.js';\r\n var areEnabled = Cookies.set(testKey, 1).get(testKey) === '1';\r\n Cookies.expire(testKey);\r\n return areEnabled;\r\n };\r\n\r\n Cookies.enabled = Cookies._areEnabled();\r\n\r\n return Cookies;\r\n };\r\n var cookiesExport = (global && typeof global.document === 'object') ? factory(global) : factory;\r\n\r\n // AMD support\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return cookiesExport; });\r\n // CommonJS/Node.js support\r\n } else if (typeof exports === 'object') {\r\n // Support Node.js specific `module.exports` (which can be a function)\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n exports = module.exports = cookiesExport;\r\n }\r\n // But always support CommonJS module 1.1.1 spec (`exports` cannot be a function)\r\n exports.Cookies = cookiesExport;\r\n } else {\r\n global.Cookies = cookiesExport;\r\n }\r\n})(typeof window === 'undefined' ? this : window);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cookies-js/dist/cookies.js\n// module id = 10\n// module chunks = 0 1 2","// this hashing algorithm is as found in some version of Google Analytics\n/* jshint ignore:start */\nvar sha = require('./sha1');\nfunction hash(d) {\n var a = 1, c = 0, h, o;\n if (d) {\n a = 0;\n for (h = d[\"length\"] - 1; h >= 0; h--) {\n o = d.charCodeAt(h);\n a = (a << 6 & 268435455) + o + (o << 14);\n c = a & 266338304;\n a = c != 0 ? a ^ c >> 21 : a\n }\n }\n return a\n};\n\nmodule.exports = {\n domainHash : hash,\n sessionHash : sha,\n userHash : sha\n}; \n\n/* jshint ignore:end */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/domain_hash.js\n// module id = 11\n// module chunks = 0 1 2","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nfunction hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\nfunction b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\nfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha1(k, d)\n { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha1(k, d)\n { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha1(k, d, e)\n { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha1_vm_test()\n{\n return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\n}\n\n/*\n * Calculate the SHA1 of a raw string\n */\nfunction rstr_sha1(s)\n{\n return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha1(key, data)\n{\n var bkey = rstr2binb(key);\n if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for(var i = 0; i < 16; i++)\n {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input)\n{\n try { hexcase } catch(e) { hexcase=0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for(var i = 0; i < input.length; i++)\n {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt( x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input)\n{\n try { b64pad } catch(e) { b64pad=''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for(var i = 0; i < len; i += 3)\n {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i+2) : 0);\n for(var j = 0; j < 4; j++)\n {\n if(i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding)\n{\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for(i = 0; i < dividend.length; i++)\n {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while(dividend.length > 0)\n {\n quotient = Array();\n x = 0;\n for(i = 0; i < dividend.length; i++)\n {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if(quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for(i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for(i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input)\n{\n var output = \"\";\n var i = -1;\n var x, y;\n\n while(++i < input.length)\n {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)\n {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if(x <= 0x7F)\n output += String.fromCharCode(x);\n else if(x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),\n 0x80 | ( x & 0x3F));\n else if(x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6 ) & 0x3F),\n 0x80 | ( x & 0x3F));\n else if(x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6 ) & 0x3F),\n 0x80 | ( x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input)\n{\n var output = \"\";\n for(var i = 0; i < input.length; i++)\n output += String.fromCharCode( input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input)\n{\n var output = \"\";\n for(var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input)\n{\n var output = Array(input.length >> 2);\n for(var i = 0; i < output.length; i++)\n output[i] = 0;\n for(var i = 0; i < input.length * 8; i += 8)\n output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input)\n{\n var output = \"\";\n for(var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\nfunction binb_sha1(x, len)\n{\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n var w = Array(80);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var e = -1009589776;\n\n for(var i = 0; i < x.length; i += 16)\n {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n var olde = e;\n\n for(var j = 0; j < 80; j++)\n {\n if(j < 16) w[j] = x[i + j];\n else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);\n var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n\n}\n\n/*\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\nfunction sha1_ft(t, b, c, d)\n{\n if(t < 20) return (b & c) | ((~b) & d);\n if(t < 40) return b ^ c ^ d;\n if(t < 60) return (b & c) | (b & d) | (c & d);\n return b ^ c ^ d;\n}\n\n/*\n * Determine the appropriate additive constant for the current iteration\n */\nfunction sha1_kt(t)\n{\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y)\n{\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt)\n{\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\nmodule.exports = hex_sha1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/sha1.js\n// module id = 12\n// module chunks = 0 1 2","module.exports = {\n\tgetNumber : function(){\n\t\treturn Math.round(Math.random() * new Date());\n\t}\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/randomness.js\n// module id = 13\n// module chunks = 0 1 2","/*\\\n|*|\n|*| :: cookies.js ::\n|*|\n|*| A complete cookies reader/writer framework with full unicode support.\n|*|\n|*| Revision #1 - September 4, 2014\n|*|\n|*| https://developer.mozilla.org/en-US/docs/Web/API/document.cookie\n|*| https://developer.mozilla.org/User:fusionchess\n|*|\n|*| This framework is released under the GNU Public License, version 3 or later.\n|*| http://www.gnu.org/licenses/gpl-3.0-standalone.html\n|*|\n|*| Syntaxes:\n|*|\n|*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])\n|*| * docCookies.getItem(name)\n|*| * docCookies.removeItem(name[, path[, domain]])\n|*| * docCookies.hasItem(name)\n|*| * docCookies.keys()\n|*|\n\\*/\n\nvar docCookies = {\n getItem: function (sKey) {\n if (!sKey) { return null; }\n return decodeURIComponent(document.cookie.replace(new RegExp(\"(?:(?:^|.*;)\\\\s*\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"), \"$1\")) || null;\n },\n setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {\n if (!sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test(sKey)) { return false; }\n var sExpires = \"\";\n if (vEnd) {\n switch (vEnd.constructor) {\n case Number:\n sExpires = vEnd === Infinity ? \"; expires=Fri, 31 Dec 9999 23:59:59 GMT\" : \"; max-age=\" + vEnd;\n break;\n case String:\n sExpires = \"; expires=\" + vEnd;\n break;\n case Date:\n sExpires = \"; expires=\" + vEnd.toUTCString();\n break;\n }\n }\n document.cookie = encodeURIComponent(sKey) + \"=\" + encodeURIComponent(sValue) + sExpires + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\") + (bSecure ? \"; secure\" : \"\");\n return true;\n },\n removeItem: function (sKey, sPath, sDomain) {\n if (!this.hasItem(sKey)) { return false; }\n document.cookie = encodeURIComponent(sKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT\" + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\");\n return true;\n },\n hasItem: function (sKey) {\n if (!sKey) { return false; }\n return (new RegExp(\"(?:^|;\\\\s*)\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(document.cookie);\n },\n keys: function () {\n var aKeys = document.cookie.replace(/((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, \"\").split(/\\s*(?:\\=[^;]*)?;\\s*/);\n for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }\n return aKeys;\n }\n};\n\nmodule.exports = docCookies;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/cookies.js\n// module id = 14\n// module chunks = 0 1 2","var debug = require('./debug');\nvar server = require('./server');\nvar copyProps = function copyProps(o1, o2) {\n for (var key in o2) {\n if (o2.hasOwnProperty(key) && o2[key] !== undefined) {\n o1[key] = o2[key];\n }\n }\n}\nmodule.exports = {\n override: function(o1, o2) {\n if (!o1 && !o2) return undefined;\n if (!o1 && o2) return o2;\n if (o1 && !o2) return o1;\n var result = {};\n copyProps(result, o1);\n copyProps(result, o2);\n return result;\n },\n runSafe: function runSafe(fn, msg, retryPeriod, retryCount, cb) {\n if (typeof retryCount === 'undefined') {\n retryCount = 10;\n }\n retryPeriod = retryPeriod || 100;\n cb = cb || function(){};\n try {\n fn();\n cb();\n } catch (e) {\n if (retryCount <= 0) {\n debug.forceLog('runSafe exception: ', e);\n server.submitError(e, { location: 'runSafe', arguments: arguments, description: msg });\n cb(e);\n } else {\n setTimeout(function(){runSafe(fn, msg, retryPeriod, retryCount - 1, cb)}, retryPeriod);\n }\n }\n }\n\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.js\n// module id = 15\n// module chunks = 0 1 2","var r = require('superagent');\nvar debug = require('./debug');\nvar ajax = require('./ajax');\nvar features = require('./features');\nvar formatting = require('./formatting');\nvar info = require('./version');\n\nvar pendingSubmission = [], done = true;\nvar batchIntervalHandler;\n\nvar eventPostAddress = '//inbox.activitystream.com/asa';\nvar errorPostAddress = '//inbox.activitystream.com/asa/error';\n\nvar post = function(packet, callback) {\n var request = ajax.post(eventPostAddress, 'POST', callback);\n request.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8');\n request.send(JSON.stringify(packet));\n};\n\nvar submitData = function(data, opts, callback) {\n opts = opts || { url: eventPostAddress };\n var packet = {\n ev: data,\n t: formatting.formatDateTime(new Date())\n };\n\n debug.log('submitting data: ', data);\n if (features.isExperiment(features.MINI_AJAX)) {\n post(packet, function(err, res) {\n if (callback) {\n callback(err, res);\n } else {\n if (err) {\n debug.log('error on server', err);\n } else {\n debug.log('server got it');\n }\n }\n });\n\n } else {\n r\n .post(opts.url)\n .set('Content-Type', 'application/json')\n .send(packet)\n .end(function(err, res) {\n if (callback) {\n callback(err, res);\n } else {\n if (err) {\n debug.log('error on server', err);\n } else {\n debug.log('server got it');\n }\n }\n });\n }\n}\n\nvar submitEvent = function(ev, callback) {\n if (ev) submitData(ev, { url: eventPostAddress }, callback);\n}\n\nvar submitError = function(err, context, callback) {\n if (typeof context === 'function') {\n callback = context;\n context = {};\n }\n if (err && (err.code === 22 || err.code === 18)) return;// skipping error 22 and 18 - related to quota storage. it seems related to people browsing in private mode\n submitData({ err: err, context: context, v: info.version() }, { url: errorPostAddress }, callback);\n}\n\nvar submitNow = function(ev) {\n if (ev instanceof Array) {\n for (var i = 0; i < ev.length; i++) {\n submitEvent(ev[i]);\n }\n } else {\n submitEvent(ev);\n }\n};\n\nvar submitNow2 = function(ev) {\n done = false;\n submitEvent(ev, function(err, res) {\n if (err) {\n debug.log('error on server', err);\n } else {\n pendingSubmission.splice(0, ev.length);\n debug.log('server got it');\n }\n done = true;\n });\n};\nvar errorSubmitter;\nvar eventSubmitter;\nvar setDefaultSubmitters = function() {\n errorSubmitter = submitError;\n eventSubmitter = submitNow;\n}\nsetDefaultSubmitters();\nmodule.exports = {\n submitError: errorSubmitter,\n submitEvent: eventSubmitter,\n batchEvent: function(e) {\n pendingSubmission.push(e);\n },\n batchOn: function() {\n batchIntervalHandler = setInterval(function batchProcessor() {\n try {\n if (pendingSubmission.length > 0 && done) {\n var batchSize = Math.min(pendingSubmission.length, 10);\n submitNow2(pendingSubmission.slice(0, batchSize));\n }\n } catch (e) {\n debug.log('exception submitting', e);\n }\n }, 400);\n },\n batchOff: function() {\n if (!batchIntervalHandler) {\n debug.log('cannot batch off, it is not on');\n } else {\n clearInterval(batchIntervalHandler);\n }\n },\n override: function overrideSubmits(submitEv, submitErr) {\n errorSubmitter = submitErr || errorSubmitter;\n eventSubmitter = submitEv || eventSubmitter;\n },\n reset: setDefaultSubmitters\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/server.js\n// module id = 16\n// module chunks = 0 1 2","/**\n * Module dependencies.\n */\n\nvar Emitter = require('emitter');\nvar reduce = require('reduce');\nvar requestBase = require('./request-base');\nvar isObject = require('./is-object');\n\n/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n root = this;\n}\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Expose `request`.\n */\n\nvar request = module.exports = require('./request').bind(null, Request);\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n return false;\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n if (null != obj[key]) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (Array.isArray(val)) {\n return val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n }\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var parts;\n var pair;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n parts = pair.split('=');\n obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return reduce(str.split(/ *; */), function(obj, str){\n var parts = str.split(/ *= */)\n , key = parts.shift()\n , val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this.setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this.setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this.parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype.setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype.parseBody = function(str){\n var parse = request.parse[this.type];\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype.setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n // issue #876: return the http status code if the response parsing fails\n err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n if (err) {\n return self.callback(err, res);\n }\n\n if (res.status >= 200 && res.status < 300) {\n return self.callback(err, res);\n }\n\n var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n\n self.callback(new_err, res);\n });\n}\n\n/**\n * Mixin `Emitter` and `requestBase`.\n */\n\nEmitter(Request.prototype);\nfor (var key in requestBase) {\n Request.prototype[key] = requestBase[key];\n}\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\n\nRequest.prototype.abort = function(){\n if (this.aborted) return;\n this.aborted = true;\n this.xhr && this.xhr.abort();\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set responseType to `val`. Presently valid responseTypes are 'blob' and \n * 'arraybuffer'.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n if (!options) {\n options = {\n type: 'basic'\n }\n }\n\n switch (options.type) {\n case 'basic':\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n }\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach(new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n this._getFormData().append(field, file, filename || file.name);\n return this;\n};\n\nRequest.prototype._getFormData = function(){\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n return this._formData;\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.send = function(data){\n var obj = isObject(data);\n var type = this._header['content-type'];\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || isHost(data)) return this;\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * @deprecated\n */\nResponse.prototype.parse = function serialize(fn){\n if (root.console) {\n console.warn(\"Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0\");\n }\n this.serialize(fn);\n return this;\n};\n\nResponse.prototype.serialize = function serialize(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype.timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequest.prototype.withCredentials = function(){\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var query = this._query.join('&');\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self.timeoutError();\n if (self.aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(e){\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = 'download';\n self.emit('progress', e);\n };\n if (this.hasListeners('progress')) {\n xhr.onprogress = handleProgress;\n }\n try {\n if (xhr.upload && this.hasListeners('progress')) {\n xhr.upload.onprogress = handleProgress;\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n if (query) {\n query = request.serializeObject(query);\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n\n // initiate request\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/superagent/lib/client.js\n// module id = 17\n// module chunks = 0 1 2","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/superagent/~/component-emitter/index.js\n// module id = 18\n// module chunks = 0 1 2","\n/**\n * Reduce `arr` with `fn`.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Mixed} initial\n *\n * TODO: combatible error handling?\n */\n\nmodule.exports = function(arr, fn, initial){ \n var idx = 0;\n var len = arr.length;\n var curr = arguments.length == 3\n ? initial\n : arr[idx++];\n\n while (idx < len) {\n curr = fn.call(null, curr, arr[idx], ++idx, arr);\n }\n \n return curr;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/superagent/~/reduce-component/index.js\n// module id = 19\n// module chunks = 0 1 2","/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nexports.clearTimeout = function _clearTimeout(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Force given parser\n *\n * Sets the body parser no matter type.\n *\n * @param {Function}\n * @api public\n */\n\nexports.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nexports.timeout = function timeout(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Faux promise support\n *\n * @param {Function} fulfill\n * @param {Function} reject\n * @return {Request}\n */\n\nexports.then = function then(fulfill, reject) {\n return this.end(function(err, res) {\n err ? reject(err) : fulfill(res);\n });\n}\n\n/**\n * Allow for extension\n */\n\nexports.use = function use(fn) {\n fn(this);\n return this;\n}\n\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nexports.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nexports.getHeader = exports.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nexports.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nexports.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nexports.field = function(name, val) {\n this._getFormData().append(name, val);\n return this;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/superagent/lib/request-base.js\n// module id = 20\n// module chunks = 0 1 2","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return null != obj && 'object' == typeof obj;\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/superagent/lib/is-object.js\n// module id = 21\n// module chunks = 0 1 2","// The node and browser modules expose versions of this with the\n// appropriate constructor function bound as first argument\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(RequestConstructor, method, url) {\n // callback\n if ('function' == typeof url) {\n return new RequestConstructor('GET', method).end(url);\n }\n\n // url first\n if (2 == arguments.length) {\n return new RequestConstructor('GET', method);\n }\n\n return new RequestConstructor(method, url);\n}\n\nmodule.exports = request;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/superagent/lib/request.js\n// module id = 22\n// module chunks = 0 1 2","module.exports = {\n post: /**\n * Make a X-Domain request to url and callback.\n *\n * @param url {String}\n * @param method {String} HTTP verb ('GET', 'POST', 'DELETE', etc.)\n * @param data {String} request body\n * @param callback {Function} to callback on completion\n * @param errback {Function} to callback on error\n */\n function xdr(url, method, callback) {\n var req;\n\n if (XMLHttpRequest) {\n req = new XMLHttpRequest();\n\n if ('withCredentials' in req) {\n req.open(method, url, true);\n req.onerror = function(e){callback(e, null);};\n req.onreadystatechange = function () {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n callback(null,req.responseText);\n } else {\n callback(new Error('Response returned with non-OK status'));\n }\n }\n };\n return req;\n }\n } else if (XDomainRequest) {\n req = new XDomainRequest();\n req.open(method, url);\n req.onerror = function(e){callback(e, null);};\n req.onload = function () {\n callback(null,req.responseText);\n };\n return req;\n } else {\n throw new Error('CORS not supported');\n }\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/ajax.js\n// module id = 23\n// module chunks = 0 1 2","var user = require('./user');\nvar experiments = {};\nmodule.exports = {\n\tdefineExperiment : function(name, percentage){\n if (typeof percentage === 'boolean'){\n if (percentage) experiments[name] = percentage; \n } else \n\t\texperiments[name] = (user.getUserHash() % 100) <= percentage;\n\t},\n\tisExperiment : function(name){\n\t\tvar exp = experiments[name];\n\t\treturn !!exp;\n\t},\n\tclearExperiments : function(){\n\t\texperiments = {};\t\n\t},\n\texperimentsLive : function(){\n\t\tvar result = [];\n\t\tfor (var exp in experiments) {\n\t\t\tif (experiments.hasOwnProperty(exp)) {\n\t\t\t\tif (experiments[exp]) result.push(exp);\t\t\t\t\n\t\t\t}\n\t\t}\n\t\treturn result.join('.');\n\t},\n\tMINI_AJAX : 'miniAjax'\t\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/features.js\n// module id = 24\n// module chunks = 0 1 2","module.exports = {\n \n formatDateTime: function (time) {\n function pad(number) {\n if (number < 10) {\n return '0' + number;\n }\n return number;\n }\n function timezone(time) {\n var hours = pad(Math.abs(Math.floor(time / 60)));\n var minutes = pad(Math.abs(time % 60));\n var sign = time > 0 ? '-' : '+';\n return sign + hours + ':' + minutes;\n }\n\n return '' + time.getFullYear() +\n '-' + pad(time.getMonth() + 1) +\n '-' + pad(time.getDate()) +\n 'T' + pad(time.getHours()) +\n ':' + pad(time.getMinutes()) +\n ':' + pad(time.getSeconds()) +\n '.' + (time.getMilliseconds() / 1000).toFixed(3).slice(2, 5) +\n timezone(time.getTimezoneOffset());\n }\n\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/formatting.js\n// module id = 25\n// module chunks = 0 1 2","var features = require('./features');\nvar major = 1,\n\tminor = 1,\n\tbuild = 77;\nmodule.exports = {\n\tmajor : major,\n\tminor: minor,\n\tbuild: build,\n\tversion : function(){\n\t\tvar experiments = '-'+features.experimentsLive();\n\t\tif (experiments === '-') experiments = '';\n\t\treturn [major, minor, build].join('.') + experiments;}\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/version.js\n// module id = 26\n// module chunks = 0 1 2","var session = require('./session');\nvar microdata = require('./microdata');\nvar autoTrack = require('./auto_track');\nvar debug = require('./debug');\nvar event = require('./event');\nvar server = require('./server');\nvar Cookies = require('cookies-js');\nvar parseuri = require('./parseuri');\nvar user = require('./user');\nvar getCampaign = require('./campaign');\nvar getReferrer = require('./referrer');\nvar browser = require('./browser');\n\nvar postboxMessages = ['product.viewed', 'product.interest', 'customer.account.provided', 'order.reviewed', 'order.delivery.selected', 'purchase.completed', 'payment.failed', 'product.carted', 'product.uncarted', 'product.unavailable', 'product.searched'];\n\nmodule.exports = function inbox(transport) {\n var serviceProviders = [];\n var sessionResumed = false;\n return function () {\n try {\n if (!Cookies.enabled) return; // let's avoid browsers without cookies for now\n\n if (arguments[0] == 'session') {\n session.customSession(arguments[1], arguments[2], arguments[3])\n return;\n }\n\n if (arguments[0] == 'connectedPartners') {\n autoTrack.links(arguments[1]);\n return;\n }\n if (arguments[0] == 'serviceProviders') {\n serviceProviders = arguments[1];\n return;\n }\n if (arguments[0] == 'tenantId') {\n browser.window.asaId = arguments[1];\n return;\n }\n if (arguments[0] == 'debug') {\n debug.setDebugMode(arguments[1]);\n return;\n }\n\n if (arguments[0] == 'transformer') {\n microdata.setMapper(arguments[1]);\n return;\n }\n\n var campaign = getCampaign(browser.document.location, browser.document.referrer);\n var referrer = getReferrer(browser.document.location, browser.document.referrer, serviceProviders);\n if (!session.hasSession()) {\n debug.log('no session, starting a new one');\n session.createSession({ campaign: campaign, referrer: referrer });\n sessionResumed = true;\n transport(event.package('sessionStarted', { newBrowser: user.getAndResetNewUserStatus() }));\n } else {\n var referrerAuth = parseuri(browser.document.referrer).authority;\n var currentAuth = parseuri(browser.document.location).authority;\n if ((referrerAuth != currentAuth && serviceProviders.indexOf(referrerAuth) === -1)) {\n session.updateTimeout({ campaign: campaign, referrer: referrer });\n debug.log('session resumed');\n sessionResumed = true;\n transport(event.package('sessionResumed'));\n }\n }\n \n if (postboxMessages.indexOf(arguments[0]) !== -1) {\n transport(event.newpackage.apply(event, arguments));\n } else\n transport(event.package.apply(event, arguments));\n } catch (e) {\n debug.forceLog('inbox exception:', e);\n server.submitError(e, { location: 'processing inbox message', arguments: arguments });\n }\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/inbox.js\n// module id = 27\n// module chunks = 0 1 2","// var jq = $;\nvar jq = require('./DOM');\nvar debug = require('./debug');\n\nvar collectReferencedProperties = function (element, item) {\n\tvar refString = element.attr('itemref');\n\tif (typeof refString !== 'undefined') {\n\t\tvar refs = refString.split(' ');\n\t\tfor (var i = 0; i < refs.length; i++) {\n\t\t\tvar ref = refs[i];\n\t\t\tvar refItem = jq('#' + ref);\n\t\t\tif (refItem.length === 1){\n\t\t\t\tcollectProperties(refItem.get(0), item);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdebug.log('missing metadata element', ref);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar collectComplexProperty = function (element) {\n\tvar item = {\n\t\t\"type\": element.attr(\"itemtype\"),\n\t\t\"properties\": {}\n\t};\n\tcollectReferencedProperties(element, item);\n\tcollectProperties(element, item);\n\treturn item;\n};\n\nvar collectSimpleProperty = function (el) {\n\tvar tag = el.prop('tagName');\n\tswitch (tag) {\n\t\tcase 'TIME': return el.attr('datetime');\n\t\tcase 'A':\n\t\tcase 'LINK':\n\t\t\treturn el.attr('href');\n\t\tdefault:\n\t\t\treturn el.prop(\"content\") || el.text() || el.attr(\"src\");\n\t}\n\n};\n\nvar collectProperties = function (el, item) {\n\tel.children().each(function (_, c) {\n\t\tvar child = jq(c);\n\t\tvar prop = child.attr('itemprop');\n\t\tif (typeof prop === 'string') {\n\t\t\tif (typeof child.attr('itemscope') !== 'undefined') {\n\t\t\t\titem.properties[prop] = collectComplexProperty(child);\n\t\t\t} else {\n\t\t\t\titem.properties[prop] = collectSimpleProperty(child);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof child.attr('itemscope') == 'undefined') {\n\t\t\tcollectProperties(child, item);\n\t\t}\n\t});\n};\n\nvar findTopLevelItems = function (el) {\n\tif (!el) return undefined; \n\tvar items = [];\n\tif (typeof el === 'string') { el = jq('#'+el).get(0); }\n\telse if (typeof el === 'object' && typeof el.tagName === 'string') { el = jq(el); }\n\telse return {};\n\n\tvar processElement = function (e) {\n\t\tvar el = jq(e);\n\t\tvar itemScope = el.attr('itemscope');\n\t\tvar itemProp = el.attr('itemprop');\n\t\tif (typeof itemScope !== 'undefined') {\n\t\t\tif (typeof itemProp !== 'undefined') {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\titems.push(theOneMapper(collectComplexProperty(el), el));\n\t\t\t}\n\t\t} else {\n\t\t\tel.children().each(function (_, c) {\n\t\t\t\tprocessElement(c);\n\t\t\t});\n\t\t}\n\t};\n\n\tprocessElement(el);\n\n\tif (items.length === 0) return {};\n\tif (items.length === 1) return items[0];\n\treturn {'__items' : items};\n};\n\nvar extractFromHead = function () {\n\tvar meta = {};\n\tjq('head > meta[property^=\"og:\"]').each(function () { var m = jq(this); meta[m.attr('property')] = m.attr('content'); });\n\tjq('head > meta[name=\"keywords\"]').each(function () { var m = jq(this); meta[\"keywords\"] = m.attr('content'); });\n\treturn theOneMapper(meta);\n};\nvar noMapper = function(m) {return m;};\nvar theOneMapper = noMapper;\nvar callbackWrapper = function callbackWrapper(cb){\n\treturn function(meta, el){\n\t\ttry{\n\t\t\treturn cb(meta, el);\n\t\t} catch(e){\n\t\t\treturn meta;\n\t\t}\n\t}\n}\nmodule.exports = {\n\textract: findTopLevelItems,\n\textractFromHead: extractFromHead,\n\tsetMapper : function(mapper){\n\t\ttheOneMapper = callbackWrapper(mapper);\n\t},\n\tnoMapper : noMapper\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/microdata.js\n// module id = 28\n// module chunks = 0 1 2","\n// Prototype of our jQuery killer ;)\nfunction DOMElement() {\n}\n\nDOMElement.prototype.text = function text() {\n return this._element.textContent;\n};\n\nDOMElement.prototype.attr = function attr(name) {\n // emulating the jQuery behaviour\n var attrValue = this._element.getAttribute('' + name);\n if (attrValue === null) return undefined;\n else\n return attrValue;\n};\n\nDOMElement.prototype.prop = function prop(name) {\n return this._element[name];\n};\n\nDOMElement.prototype.children = function children() {\n\n var c = this._element.children,\n $doms = [],\n i, n = c.length;\n\n for (i = 0; i < n; i++)\n $doms[i] = $DOM(c[i]);\n\n return new DOMElements($doms);\n};\n\nfunction DOMElements(els) {\n this._els = els;\n this.length = els.length;\n}\n\nDOMElements.prototype.each = function each(callback) {\n for (var i = 0; i < this._els.length; i++) {\n var element = this._els[i];\n callback.call(element, i, element);\n }\n};\n\nDOMElements.prototype.get = function get(index) {\n return this._els[index];\n};\n\n// query parameter is either an element id or a css-style selector\nvar $DOM = module.exports = function $DOM(query) {\n\n if (!query || !(typeof query === 'string' || query instanceof Element || query instanceof DOMElement || query instanceof DOMElements)) {\n throw new Error('Invalid argument provided:' + query);\n }\n\n if (query instanceof DOMElement || query instanceof DOMElements) return query;\n\n if (query instanceof Element) {\n var wrapper = new DOMElement();\n wrapper._element = query;\n return wrapper;\n }\n\n query = ('' + query).trim();\n\n var elem, elems = [], i, n;\n\n try {\n if (query[0] === '#') { \n elem = document.getElementById(query.substr(1));\n if (elem) elem = [elem]; else elem = [];\n } else {\n elem = document.querySelectorAll(query);\n }\n n = elem.length;\n\n for (i = 0; i < n; i++)\n elems.push($DOM(elem[i]));\n\n return new DOMElements(elems);\n } catch (exception) {\n throw new Error('Invalid selector: ' + query);\n }\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/DOM.js\n// module id = 29\n// module chunks = 0 1 2","var microdata = require('./microdata');\nvar session = require('./session');\nvar info = require('./version');\nvar user = require('./user');\nvar _ = require('./utils');\nvar parseUri = require('./parseuri');\nvar Cookies = require('cookies-js');\nvar formatting = require('./formatting');\nvar getCampaign = require('./campaign');\nvar browser = require('./browser');\n\nvar DOMMeta = function (o) {\n if (o.length < 2) return false;\n return (typeof o[1] === 'object' && typeof o[1].tagName === 'undefined') ? o[1] : false;\n};\n\nvar pageview = function () {\n var title = browser.document.title;\n var location = browser.window.location.protocol + '//' + browser.window.location.host + browser.window.location.pathname + browser.window.location.hash + browser.window.location.search;\n return { type: 'pageview', location: location, title: title };\n};\n\nvar sectionentered = function (section, page) {\n return { type: 'section_entered', section: section };\n};\n\nvar custom = function (event) {\n var baseEvent = pageview();\n baseEvent.type = 'custom';\n baseEvent.event = event;\n return baseEvent;\n};\n\nvar gatherMetaInfo = function gatherMetaInfo(a) {\n var event = a[0];\n var eventBody = {};\n if (event) {\n switch (event.trim()) {\n case 'pageview':\n eventBody = pageview.apply(null, [].slice.call(a, 1));\n break;\n case 'sectionentered':\n eventBody = sectionentered.apply(null, [].slice.call(a, 1));\n break;\n default:\n eventBody = custom.apply(null, a);\n }\n return eventBody;\n }\n throw new Error('Upsi! There is something wrong with this event:', a);\n};\n\n\nvar gatherSystemInfo = function (e) {\n var sess = session.getSession();\n e.t = formatting.formatDateTime(new Date());\n e.session = sess.id;\n e.referrer = sess.referrer || '';\n var campaign = sess.campaign;\n if (campaign) e.campaign = campaign;\n e.uid = user.getUserId();\n var partnerId = browser.window.sessionStorage.getItem('__as.partner_id');\n var partnerSId = browser.window.sessionStorage.getItem('__as.partner_sid');\n if (partnerId) {\n e.partner_id = partnerId;\n }\n if (partnerSId) {\n e.partner_sid = partnerSId;\n }\n e.tenant_id = browser.window.asaId;\n e.v = info.version();\n return e;\n};\n\nvar postboxEvents = function(type, e, meta){\n var defaultEventInfo = {\n \"type\" : type,\n \"occurred\" : meta.t,\n \"origin\" : browser.window.location.host,\n \"user\" : {\n \"did\" : meta.uid,\n \"sid\" : meta.session\n },\n \"page\" : {\n \"url\" : browser.window.location.protocol + '//' + browser.window.location.host + browser.window.location.pathname + browser.window.location.hash + browser.window.location.search,\n \"referrer\" : meta.referrer\n },\n \"v\" : meta.v,\n \"campaign\" : meta.campaign,\n \"tenant\" : meta.tenant_id\n };\n if (meta.partner_id) defaultEventInfo.partnerId = meta.partner_id;\n if (meta.partner_sid) defaultEventInfo.partnerSId = meta.partner_sid;\n return _.override(defaultEventInfo, e);\n}\nmodule.exports = {\n newpackage: function newpackages(eventName, eventInfo, extra) {\n var meta = gatherMetaInfo(arguments);\n meta = gatherSystemInfo(meta);\n return postboxEvents(eventName, eventInfo, meta);\n },\n package: function (eventname, domElement, extra) {\n\n var event = gatherMetaInfo(arguments);\n event = gatherSystemInfo(event);\n // if (arguments[0] == 'pageview') {\n // return null;\n // } else\n if (arguments[0] == 'sessionStarted') {\n event.meta = microdata.extractFromHead();\n if (typeof arguments[1] === 'object') {\n event.meta = _.override(event.meta, arguments[1]);\n }\n } else\n if (arguments[0] == 'itemview') {\n event.meta = DOMMeta(arguments) || microdata.extract(arguments[1]);\n } else\n if (arguments[0] == 'sectionentered') {\n event.meta = DOMMeta(arguments) || microdata.extract(arguments[1]);\n } else {\n var meta = undefined;\n if (typeof domElement === 'string' || (typeof domElement === 'object' && typeof domElement.tagName !== 'undefined')) {\n meta = microdata.extract(domElement);\n } else\n if (typeof extra === 'undefined' && typeof domElement === 'object') {\n extra = domElement;\n domElement = null;\n }\n meta = _.override(meta, extra);\n if (meta !== undefined) event.meta = meta;\n }\n return event;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/event.js\n// module id = 30\n// module chunks = 0 1 2","var parseUri = require('./parseuri');\nmodule.exports = function getCampaign(location, referrer) {\n var campaignKeys;\n referrer = parseUri(referrer);\n location = parseUri(location);\n if (referrer.queryKey && referrer.queryKey['utm_campaign'])\n campaignKeys = campaignKeys || referrer.queryKey;\n\n if (location.queryKey && location.queryKey['utm_campaign'])\n campaignKeys = campaignKeys || location.queryKey;\n\n if (campaignKeys) {\n var campaign = {};\n if (campaignKeys.utm_campaign) campaign.campaign = campaignKeys.utm_campaign;\n if (campaignKeys.utm_source) campaign.source = campaignKeys.utm_source;\n if (campaignKeys.utm_medium) campaign.medium = campaignKeys.utm_medium;\n if (campaignKeys.utm_term) campaign.term = campaignKeys.utm_term;\n if (campaignKeys.utm_content) campaign.content = campaignKeys.utm_content;\n return campaign;\n }\n return null;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/campaign.js\n// module id = 31\n// module chunks = 0 1 2","var parseuri = require('./parseuri');\nmodule.exports = function(location, referrer, serviceProviders) {\n if (referrer && referrer.length > 0) {\n var referrerAuth = parseuri(referrer).authority;\n var currentAuth = parseuri(location).authority;\n if (referrerAuth != currentAuth && serviceProviders.indexOf(referrerAuth) === -1) {\n return referrer;\n }\n }\n return null;\n}\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/referrer.js\n// module id = 32\n// module chunks = 0 1 2"],"sourceRoot":""}