with attributes\n this.provider = this.media.getAttribute(this.config.attributes.embed.provider);\n\n // Remove attribute\n this.media.removeAttribute(this.config.attributes.embed.provider);\n }\n\n // Unsupported or missing provider\n if (is.empty(this.provider) || !Object.keys(providers).includes(this.provider)) {\n this.debug.error('Setup failed: Invalid provider');\n return;\n }\n\n // Audio will come later for external providers\n this.type = types.video;\n\n break;\n\n case 'video':\n case 'audio':\n this.type = type;\n this.provider = providers.html5;\n\n // Get config from attributes\n if (this.media.hasAttribute('crossorigin')) {\n this.config.crossorigin = true;\n }\n if (this.media.hasAttribute('autoplay')) {\n this.config.autoplay = true;\n }\n if (this.media.hasAttribute('playsinline') || this.media.hasAttribute('webkit-playsinline')) {\n this.config.playsinline = true;\n }\n if (this.media.hasAttribute('muted')) {\n this.config.muted = true;\n }\n if (this.media.hasAttribute('loop')) {\n this.config.loop.active = true;\n }\n\n break;\n\n default:\n this.debug.error('Setup failed: unsupported type');\n return;\n }\n\n // Check for support again but with type\n this.supported = support.check(this.type, this.provider, this.config.playsinline);\n\n // If no support for even API, bail\n if (!this.supported.api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n this.eventListeners = [];\n\n // Create listeners\n this.listeners = new Listeners(this);\n\n // Setup local storage for user settings\n this.storage = new Storage(this);\n\n // Store reference\n this.media.plyr = this;\n\n // Wrap media\n if (!is.element(this.elements.container)) {\n this.elements.container = createElement('div', { tabindex: 0 });\n wrap(this.media, this.elements.container);\n }\n\n // Add style hook\n ui.addStyleHook.call(this);\n\n // Setup media\n media.setup.call(this);\n\n // Listen for events if debugging\n if (this.config.debug) {\n on.call(this, this.elements.container, this.config.events.join(' '), event => {\n this.debug.log(`event: ${event.type}`);\n });\n }\n\n // Setup interface\n // If embed but not fully supported, build interface now to avoid flash of controls\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n ui.build.call(this);\n }\n\n // Container listeners\n this.listeners.container();\n\n // Global listeners\n this.listeners.global();\n\n // Setup fullscreen\n this.fullscreen = new Fullscreen(this);\n\n // Setup ads if provided\n if (this.config.ads.enabled) {\n this.ads = new Ads(this);\n }\n\n // Autoplay if required\n if (this.config.autoplay) {\n this.play();\n }\n\n // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek\n this.lastSeekTime = 0;\n\n // Setup preview thumbnails if enabled\n if (this.config.previewThumbnails.enabled) {\n this.previewThumbnails = new PreviewThumbnails(this);\n }\n }\n\n // ---------------------------------------\n // API\n // ---------------------------------------\n\n /**\n * Types and provider helpers\n */\n get isHTML5() {\n return Boolean(this.provider === providers.html5);\n }\n\n get isEmbed() {\n return Boolean(this.isYouTube || this.isVimeo);\n }\n\n get isYouTube() {\n return Boolean(this.provider === providers.youtube);\n }\n\n get isVimeo() {\n return Boolean(this.provider === providers.vimeo);\n }\n\n get isVideo() {\n return Boolean(this.type === types.video);\n }\n\n get isAudio() {\n return Boolean(this.type === types.audio);\n }\n\n /**\n * Play the media, or play the advertisement (if they are not blocked)\n */\n play() {\n if (!is.function(this.media.play)) {\n return null;\n }\n\n // Return the promise (for HTML5)\n return this.media.play();\n }\n\n /**\n * Pause the media\n */\n pause() {\n if (!this.playing || !is.function(this.media.pause)) {\n return;\n }\n\n this.media.pause();\n }\n\n /**\n * Get playing state\n */\n get playing() {\n return Boolean(this.ready && !this.paused && !this.ended);\n }\n\n /**\n * Get paused state\n */\n get paused() {\n return Boolean(this.media.paused);\n }\n\n /**\n * Get stopped state\n */\n get stopped() {\n return Boolean(this.paused && this.currentTime === 0);\n }\n\n /**\n * Get ended state\n */\n get ended() {\n return Boolean(this.media.ended);\n }\n\n /**\n * Toggle playback based on current status\n * @param {boolean} input\n */\n togglePlay(input) {\n // Toggle based on current state if nothing passed\n const toggle = is.boolean(input) ? input : !this.playing;\n\n if (toggle) {\n this.play();\n } else {\n this.pause();\n }\n }\n\n /**\n * Stop playback\n */\n stop() {\n if (this.isHTML5) {\n this.pause();\n this.restart();\n } else if (is.function(this.media.stop)) {\n this.media.stop();\n }\n }\n\n /**\n * Restart playback\n */\n restart() {\n this.currentTime = 0;\n }\n\n /**\n * Rewind\n * @param {number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n */\n rewind(seekTime) {\n this.currentTime = this.currentTime - (is.number(seekTime) ? seekTime : this.config.seekTime);\n }\n\n /**\n * Fast forward\n * @param {number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n */\n forward(seekTime) {\n this.currentTime = this.currentTime + (is.number(seekTime) ? seekTime : this.config.seekTime);\n }\n\n /**\n * Seek to a time\n * @param {number} input - where to seek to in seconds. Defaults to 0 (the start)\n */\n set currentTime(input) {\n // Bail if media duration isn't available yet\n if (!this.duration) {\n return;\n }\n\n // Validate input\n const inputIsValid = is.number(input) && input > 0;\n\n // Set\n this.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0;\n\n // Logging\n this.debug.log(`Seeking to ${this.currentTime} seconds`);\n }\n\n /**\n * Get current time\n */\n get currentTime() {\n return Number(this.media.currentTime);\n }\n\n /**\n * Get buffered\n */\n get buffered() {\n const { buffered } = this.media;\n\n // YouTube / Vimeo return a float between 0-1\n if (is.number(buffered)) {\n return buffered;\n }\n\n // HTML5\n // TODO: Handle buffered chunks of the media\n // (i.e. seek to another section buffers only that section)\n if (buffered && buffered.length && this.duration > 0) {\n return buffered.end(0) / this.duration;\n }\n\n return 0;\n }\n\n /**\n * Get seeking status\n */\n get seeking() {\n return Boolean(this.media.seeking);\n }\n\n /**\n * Get the duration of the current media\n */\n get duration() {\n // Faux duration set via config\n const fauxDuration = parseFloat(this.config.duration);\n\n // Media duration can be NaN or Infinity before the media has loaded\n const realDuration = (this.media || {}).duration;\n const duration = !is.number(realDuration) || realDuration === Infinity ? 0 : realDuration;\n\n // If config duration is funky, use regular duration\n return fauxDuration || duration;\n }\n\n /**\n * Set the player volume\n * @param {number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n */\n set volume(value) {\n let volume = value;\n const max = 1;\n const min = 0;\n\n if (is.string(volume)) {\n volume = Number(volume);\n }\n\n // Load volume from storage if no value specified\n if (!is.number(volume)) {\n volume = this.storage.get('volume');\n }\n\n // Use config if all else fails\n if (!is.number(volume)) {\n ({ volume } = this.config);\n }\n\n // Maximum is volumeMax\n if (volume > max) {\n volume = max;\n }\n // Minimum is volumeMin\n if (volume < min) {\n volume = min;\n }\n\n // Update config\n this.config.volume = volume;\n\n // Set the player volume\n this.media.volume = volume;\n\n // If muted, and we're increasing volume manually, reset muted state\n if (!is.empty(value) && this.muted && volume > 0) {\n this.muted = false;\n }\n }\n\n /**\n * Get the current player volume\n */\n get volume() {\n return Number(this.media.volume);\n }\n\n /**\n * Increase volume\n * @param {boolean} step - How much to decrease by (between 0 and 1)\n */\n increaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume + (is.number(step) ? step : 0);\n }\n\n /**\n * Decrease volume\n * @param {boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n this.increaseVolume(-step);\n }\n\n /**\n * Set muted state\n * @param {boolean} mute\n */\n set muted(mute) {\n let toggle = mute;\n\n // Load muted state from storage\n if (!is.boolean(toggle)) {\n toggle = this.storage.get('muted');\n }\n\n // Use config if all else fails\n if (!is.boolean(toggle)) {\n toggle = this.config.muted;\n }\n\n // Update config\n this.config.muted = toggle;\n\n // Set mute on the player\n this.media.muted = toggle;\n }\n\n /**\n * Get current muted state\n */\n get muted() {\n return Boolean(this.media.muted);\n }\n\n /**\n * Check if the media has audio\n */\n get hasAudio() {\n // Assume yes for all non HTML5 (as we can't tell...)\n if (!this.isHTML5) {\n return true;\n }\n\n if (this.isAudio) {\n return true;\n }\n\n // Get audio tracks\n return (\n Boolean(this.media.mozHasAudio) ||\n Boolean(this.media.webkitAudioDecodedByteCount) ||\n Boolean(this.media.audioTracks && this.media.audioTracks.length)\n );\n }\n\n /**\n * Set playback speed\n * @param {number} speed - the speed of playback (0.5-2.0)\n */\n set speed(input) {\n let speed = null;\n\n if (is.number(input)) {\n speed = input;\n }\n\n if (!is.number(speed)) {\n speed = this.storage.get('speed');\n }\n\n if (!is.number(speed)) {\n speed = this.config.speed.selected;\n }\n\n // Set min/max\n if (speed < 0.1) {\n speed = 0.1;\n }\n if (speed > 2.0) {\n speed = 2.0;\n }\n\n if (!this.config.speed.options.includes(speed)) {\n this.debug.warn(`Unsupported speed (${speed})`);\n return;\n }\n\n // Update config\n this.config.speed.selected = speed;\n\n // Set media speed\n this.media.playbackRate = speed;\n }\n\n /**\n * Get current playback speed\n */\n get speed() {\n return Number(this.media.playbackRate);\n }\n\n /**\n * Set playback quality\n * Currently HTML5 & YouTube only\n * @param {number} input - Quality level\n */\n set quality(input) {\n const config = this.config.quality;\n const options = this.options.quality;\n\n if (!options.length) {\n return;\n }\n\n let quality = [\n !is.empty(input) && Number(input),\n this.storage.get('quality'),\n config.selected,\n config.default,\n ].find(is.number);\n\n let updateStorage = true;\n\n if (!options.includes(quality)) {\n const value = closest(options, quality);\n this.debug.warn(`Unsupported quality option: ${quality}, using ${value} instead`);\n quality = value;\n\n // Don't update storage if quality is not supported\n updateStorage = false;\n }\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\n\n // Save to storage\n if (updateStorage) {\n this.storage.set({ quality });\n }\n }\n\n /**\n * Get current quality level\n */\n get quality() {\n return this.media.quality;\n }\n\n /**\n * Toggle loop\n * TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n * @param {boolean} input - Whether to loop or not\n */\n set loop(input) {\n const toggle = is.boolean(input) ? input : this.config.loop.active;\n this.config.loop.active = toggle;\n this.media.loop = toggle;\n\n // Set default to be a true toggle\n /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle';\n\n switch (type) {\n case 'start':\n if (this.config.loop.end && this.config.loop.end <= this.currentTime) {\n this.config.loop.end = null;\n }\n this.config.loop.start = this.currentTime;\n // this.config.loop.indicator.start = this.elements.display.played.value;\n break;\n\n case 'end':\n if (this.config.loop.start >= this.currentTime) {\n return this;\n }\n this.config.loop.end = this.currentTime;\n // this.config.loop.indicator.end = this.elements.display.played.value;\n break;\n\n case 'all':\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n this.config.loop.indicator.start = 0;\n this.config.loop.indicator.end = 100;\n break;\n\n case 'toggle':\n if (this.config.loop.active) {\n this.config.loop.start = 0;\n this.config.loop.end = null;\n } else {\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n }\n break;\n\n default:\n this.config.loop.start = 0;\n this.config.loop.end = null;\n break;\n } */\n }\n\n /**\n * Get current loop state\n */\n get loop() {\n return Boolean(this.media.loop);\n }\n\n /**\n * Set new media source\n * @param {object} input - The new source object (see docs)\n */\n set source(input) {\n source.change.call(this, input);\n }\n\n /**\n * Get current source\n */\n get source() {\n return this.media.currentSrc;\n }\n\n /**\n * Get a download URL (either source or custom)\n */\n get download() {\n const { download } = this.config.urls;\n\n return is.url(download) ? download : this.source;\n }\n\n /**\n * Set the poster image for a video\n * @param {input} - the URL for the new poster image\n */\n set poster(input) {\n if (!this.isVideo) {\n this.debug.warn('Poster can only be set for video');\n return;\n }\n\n ui.setPoster.call(this, input, false).catch(() => {});\n }\n\n /**\n * Get the current poster image\n */\n get poster() {\n if (!this.isVideo) {\n return null;\n }\n\n return this.media.getAttribute('poster');\n }\n\n /**\n * Set the autoplay state\n * @param {boolean} input - Whether to autoplay or not\n */\n set autoplay(input) {\n const toggle = is.boolean(input) ? input : this.config.autoplay;\n this.config.autoplay = toggle;\n }\n\n /**\n * Get the current autoplay state\n */\n get autoplay() {\n return Boolean(this.config.autoplay);\n }\n\n /**\n * Toggle captions\n * @param {boolean} input - Whether to enable captions\n */\n toggleCaptions(input) {\n captions.toggle.call(this, input, false);\n }\n\n /**\n * Set the caption track by index\n * @param {number} - Caption index\n */\n set currentTrack(input) {\n captions.set.call(this, input, false);\n }\n\n /**\n * Get the current caption track index (-1 if disabled)\n */\n get currentTrack() {\n const { toggled, currentTrack } = this.captions;\n return toggled ? currentTrack : -1;\n }\n\n /**\n * Set the wanted language for captions\n * Since tracks can be added later it won't update the actual caption track until there is a matching track\n * @param {string} - Two character ISO language code (e.g. EN, FR, PT, etc)\n */\n set language(input) {\n captions.setLanguage.call(this, input, false);\n }\n\n /**\n * Get the current track's language\n */\n get language() {\n return (captions.getCurrentTrack.call(this) || {}).language;\n }\n\n /**\n * Toggle picture-in-picture playback on WebKit/MacOS\n * TODO: update player with state, support, enabled\n * TODO: detect outside changes\n */\n set pip(input) {\n // Bail if no support\n if (!support.pip) {\n return;\n }\n\n // Toggle based on current state if not passed\n const toggle = is.boolean(input) ? input : !this.pip;\n\n // Toggle based on current state\n // Safari\n if (is.function(this.media.webkitSetPresentationMode)) {\n this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n }\n\n // Chrome\n if (is.function(this.media.requestPictureInPicture)) {\n if (!this.pip && toggle) {\n this.media.requestPictureInPicture();\n } else if (this.pip && !toggle) {\n document.exitPictureInPicture();\n }\n }\n }\n\n /**\n * Get the current picture-in-picture state\n */\n get pip() {\n if (!support.pip) {\n return null;\n }\n\n // Safari\n if (!is.empty(this.media.webkitPresentationMode)) {\n return this.media.webkitPresentationMode === pip.active;\n }\n\n // Chrome\n return this.media === document.pictureInPictureElement;\n }\n\n /**\n * Trigger the airplay dialog\n * TODO: update player with state, support, enabled\n */\n airplay() {\n // Show dialog if supported\n if (support.airplay) {\n this.media.webkitShowPlaybackTargetPicker();\n }\n }\n\n /**\n * Toggle the player controls\n * @param {boolean} [toggle] - Whether to show the controls\n */\n toggleControls(toggle) {\n // Don't toggle if missing UI support or if it's audio\n if (this.supported.ui && !this.isAudio) {\n // Get state before change\n const isHidden = hasClass(this.elements.container, this.config.classNames.hideControls);\n\n // Negate the argument if not undefined since adding the class to hides the controls\n const force = typeof toggle === 'undefined' ? undefined : !toggle;\n\n // Apply and get updated state\n const hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force);\n\n // Close menu\n if (hiding && this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n controls.toggleMenu.call(this, false);\n }\n\n // Trigger event on change\n if (hiding !== isHidden) {\n const eventName = hiding ? 'controlshidden' : 'controlsshown';\n triggerEvent.call(this, this.media, eventName);\n }\n\n return !hiding;\n }\n\n return false;\n }\n\n /**\n * Add event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n */\n on(event, callback) {\n on.call(this, this.elements.container, event, callback);\n }\n\n /**\n * Add event listeners once\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n */\n once(event, callback) {\n once.call(this, this.elements.container, event, callback);\n }\n\n /**\n * Remove event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n */\n off(event, callback) {\n off(this.elements.container, event, callback);\n }\n\n /**\n * Destroy an instance\n * Event listeners are removed when elements are removed\n * http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n * @param {function} callback - Callback for when destroy is complete\n * @param {boolean} soft - Whether it's a soft destroy (for source changes etc)\n */\n destroy(callback, soft = false) {\n if (!this.ready) {\n return;\n }\n\n const done = () => {\n // Reset overflow (incase destroyed while in fullscreen)\n document.body.style.overflow = '';\n\n // GC for embed\n this.embed = null;\n\n // If it's a soft destroy, make minimal changes\n if (soft) {\n if (Object.keys(this.elements).length) {\n // Remove elements\n removeElement(this.elements.buttons.play);\n removeElement(this.elements.captions);\n removeElement(this.elements.controls);\n removeElement(this.elements.wrapper);\n\n // Clear for GC\n this.elements.buttons.play = null;\n this.elements.captions = null;\n this.elements.controls = null;\n this.elements.wrapper = null;\n }\n\n // Callback\n if (is.function(callback)) {\n callback();\n }\n } else {\n // Unbind listeners\n unbindListeners.call(this);\n\n // Replace the container with the original element provided\n replaceElement(this.elements.original, this.elements.container);\n\n // Event\n triggerEvent.call(this, this.elements.original, 'destroyed', true);\n\n // Callback\n if (is.function(callback)) {\n callback.call(this.elements.original);\n }\n\n // Reset state\n this.ready = false;\n\n // Clear for garbage collection\n setTimeout(() => {\n this.elements = null;\n this.media = null;\n }, 200);\n }\n };\n\n // Stop playback\n this.stop();\n\n // Provider specific stuff\n if (this.isHTML5) {\n // Clear timeout\n clearTimeout(this.timers.loading);\n\n // Restore native video controls\n ui.toggleNativeControls.call(this, true);\n\n // Clean up\n done();\n } else if (this.isYouTube) {\n // Clear timers\n clearInterval(this.timers.buffering);\n clearInterval(this.timers.playing);\n\n // Destroy YouTube API\n if (this.embed !== null && is.function(this.embed.destroy)) {\n this.embed.destroy();\n }\n\n // Clean up\n done();\n } else if (this.isVimeo) {\n // Destroy Vimeo API\n // then clean up (wait, to prevent postmessage errors)\n if (this.embed !== null) {\n this.embed.unload().then(done);\n }\n\n // Vimeo does not always return\n setTimeout(done, 200);\n }\n }\n\n /**\n * Check for support for a mime type (HTML5 only)\n * @param {string} type - Mime type\n */\n supports(type) {\n return support.mime.call(this, type);\n }\n\n /**\n * Check for support\n * @param {string} type - Player type (audio/video)\n * @param {string} provider - Provider (html5/youtube/vimeo)\n * @param {bool} inline - Where player has `playsinline` sttribute\n */\n static supported(type, provider, inline) {\n return support.check(type, provider, inline);\n }\n\n /**\n * Load an SVG sprite into the page\n * @param {string} url - URL for the SVG sprite\n * @param {string} [id] - Unique ID\n */\n static loadSprite(url, id) {\n return loadSprite(url, id);\n }\n\n /**\n * Setup multiple instances\n * @param {*} selector\n * @param {object} options\n */\n static setup(selector, options = {}) {\n let targets = null;\n\n if (is.string(selector)) {\n targets = Array.from(document.querySelectorAll(selector));\n } else if (is.nodeList(selector)) {\n targets = Array.from(selector);\n } else if (is.array(selector)) {\n targets = selector.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n return targets.map(t => new Plyr(t, options));\n }\n}\n\nPlyr.defaults = cloneDeep(defaults);\n\nexport default Plyr;\n"]}
\ No newline at end of file
+{"version":3,"sources":["node_modules/raven-js/vendor/json-stringify-safe/stringify.js","node_modules/raven-js/src/utils.js","node_modules/raven-js/vendor/TraceKit/tracekit.js","node_modules/raven-js/vendor/md5/md5.js","node_modules/raven-js/src/configError.js","node_modules/raven-js/src/console.js","node_modules/raven-js/src/raven.js","node_modules/raven-js/src/singleton.js","src/js/utils/is.js","src/js/utils/events.js","src/js/utils/elements.js","src/js/utils/animation.js","src/js/utils/browser.js","src/js/support.js","src/js/html5.js","src/js/utils/arrays.js","src/js/utils/objects.js","src/js/utils/strings.js","src/js/utils/i18n.js","src/js/storage.js","src/js/utils/fetch.js","src/js/utils/loadSprite.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/states.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","src/js/utils/loadImage.js","src/js/ui.js","src/js/utils/style.js","src/js/listeners.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/loadScript.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","demo/src/js/demo.js","src/js/media.js","src/js/plugins/ads.js","src/js/plugins/previewThumbnails.js","src/js/source.js","src/js/plyr.js"],"names":["indexOf","haystack","needle","i","length","serializer","replacer","cycleReplacer","stack","keys","key","value","slice","join","thisPos","this","splice","push","Infinity","call","Error","err","message","name","Object","prototype","hasOwnProperty","stringifyError","module","exports","obj","spaces","JSON","stringify","getSerialize","_window","window","global","self","isUndefined","what","isPlainObject","toString","isString","isArray","supportsFetch","Headers","Request","Response","e","each","callback","j","hasKey","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","htmlElementAsString","elem","className","classes","attr","out","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isSameStacktrace","stack1","stack2","frames1","frames","frames2","undefined","filename","lineno","colno","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","MAX_SERIALIZE_KEYS_LENGTH","jsonSize","encodeURI","utf8Length","serializeValue","type","utils","isObject","isError","isErrorEvent","isDOMError","isDOMException","isFunction","isEmptyObject","_","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","data","original","normalizedData","objectMerge","obj1","obj2","objectFrozen","isFrozen","urlencode","o","pairs","encodeURIComponent","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString","nextStr","height","sepLength","parentNode","reverse","isSameException","ex1","ex2","values","stacktrace","parseUrl","url","match","query","fragment","protocol","host","path","relative","fill","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","serializeException","ex","depth","maxSize","serialized","serializeObject","reduce","acc","Array","map","val","serializeKeysForMessage","maxLength","filter","usedKeys","sanitize","sanitizeKeys","safeInput","sanitizeRegExp","sanitizeMask","parse","o_O","sanitizeWorker","workerInput","k","test","TraceKit","collectWindowErrors","debug","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","getLocationHref","document","location","href","report","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastException","lastExceptionStack","notifyHandlers","isWindowError","exception","apply","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","error","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","func","_lastExceptionStack","_lastArgs","rethrow","args","setTimeout","incomplete","subscribe","handler","onerror","unsubscribe","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","winjs","gecko","geckoEval","chromeEval","lines","exec","isNative","columnNumber","xhr","XMLHttpRequest","open","send","status","responseText","sourceMaps","sourceMapAddress","charAt","origin","hostname","port","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","safeAdd","x","y","lsw","md5cmn","q","s","t","cnt","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstr2hex","str2rstrUTF8","unescape","rawMD5","rstrMD5","rawHMACMD5","hash","bkey","ipad","opad","rstrHMACMD5","md5_1","string","raw","RavenConfigError","constructor","configError","console$1","console","level","originalConsoleLevel","originalConsole","sentryLevel","logger","extra","Function","wrapConsoleMethod","require$$0","dsnKeys","dsnPattern","now","Date","_document","_navigator","navigator","keepOriginalCallback","Raven","method","_hasJSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","SENTRY_RELEASE","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","_lastHref","_resetBackoff","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","property","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","_promiseRejectionHandler","event","reason","mechanism","handled","bind","addEventListener","removeEventListener","trimHeadFrames","captureMessage","_getCaptureExceptionOptionsFromPlainObject","_handleStackInfo","currentOptions","exKeys","sort","fingerprint","md5","__serialized__","initialCall","fileurl","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodedOptions","email","globalServer","script","createElement","async","src","head","body","appendChild","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","_breadcrumbEventHandler","evtName","target","category","_keypressEventHandler","isContentEditable","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","_originalFunctionToString","wrappedBuiltIns","wrapTimeFn","fn","originalCallback","function","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","attachEvent","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","installer","m","allowSecretKey","_processException","frame","_normalizeFrame","in_app","stackInfoUrl","normalized","prefixedMessage","transaction","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","userAgent","User-Agent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","last","_setBackoffState","retry","get","getResponseHeader","parseInt","baseData","project","platform","serverName","server_name","_sanitizeData","forEach","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","XDomainRequest","onload","setRequestHeader","evaluated","setUser","setReleaseContext","raven","_Raven","RavenConstructor","noConflict","singleton","Client","getConstructor","instanceOf","Boolean","isNullOrUndefined","isNodeList","NodeList","isEmpty","is","nullOrUndefined","number","Number","isNaN","boolean","array","weakMap","WeakMap","nodeList","Element","textNode","Text","Event","keyboardEvent","KeyboardEvent","cue","TextTrackCue","VTTCue","TextTrack","kind","URL","startsWith","empty","supportsPassiveListeners","supported","defineProperty","toggleListener","_this","toggle","passive","events","eventListeners","on","off","once","_this2","onceCallback","_len","_key","triggerEvent","bubbles","detail","CustomEvent","assign","plyr","elements","wrapper","targets","index","child","cloneNode","parent","sibling","nextSibling","insertBefore","setAttributes","attributes","entries","_ref","_slicedToArray","_ref3","_ref4","setAttribute","text","innerText","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","trim","class","toggleHidden","hidden","hide","removeAttribute","toggleClass","force","classList","contains","hasClass","matches","querySelectorAll","includes","getElements","container","getElement","querySelector","setFocus","tabFocus","focus","preventScroll","classNames","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","style","repaint","offsetHeight","range","browser","isIE","documentMode","isEdge","isWebkit","documentElement","isIPhone","isIos","defaultCodecs","audio/ogg","audio/wav","video/webm","video/mp4","video/ogg","support","audio","video","check","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","touch","transitions","reducedMotion","matchMedia","html5","getSources","getQualityOptions","extend","player","set","_player$media","currentTime","paused","preload","play","load","quality","cancelRequests","blankVideo","dedupe","getDeep","_defineProperty","format","replaceAll","toTitleCase","toCamelCase","toPascalCase","getHTML","innerHTML","resources","vimeo","youtube","i18n","{seektime}","seekTime","{title}","title","_ref2","Storage","_classCallCheck","enabled","storage","store","localStorage","getItem","json","setItem","removeItem","responseType","Promise","resolve","reject","loadSprite","hasId","exists","getElementById","update","insertAdjacentElement","useStorage","cached","content","catch","getHours","trunc","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","cors","iconUrl","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","display","buffer","duration","seekTooltip","tooltip","warn","toggleNativeControls","createIcon","iconPath","iconPrefix","icon","createElementNS","role","focusable","use","setAttributeNS","createLabel","createBadge","badge","menu","createButton","buttonType","label","labelPressed","iconPressed","control","button","createRange","step","autocomplete","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","updateRangeFill","createProgress","aria-hidden","suffixKey","played","suffix","createTime","bindMenuItemShortcuts","menuItem","which","preventDefault","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","list","_ref$badge","_ref$checked","checked","aria-checked","flex","enumerable","children","node","listeners","currentTrack","speed","parseFloat","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","_this3","toFixed","getElementsByTagName","nodeValue","setProgress","buffered","percent","setProperty","updateSeekTooltip","_this4","tooltips","clientRect","getBoundingClientRect","visible","width","pageX","left","timeUpdate","invert","invertTime","seeking","durationUpdate","pow","hasDuration","displayDuration","toggleMenuButton","setting","updateSetting","pane","panels","default","getLabel","setQualityMenu","_this5","checkMenu","getBadge","sorting","setCaptionsMenu","_this6","tracks","getTracks","toggled","language","setSpeedMenu","_this7","isVimeo","some","popup","firstItem","toggleMenu","show","isMenuItem","getMenuSize","tab","clone","position","opacity","scrollWidth","scrollHeight","_this8","size","restore","propertyName","setDownloadLink","download","create","_this9","aria-haspopup","aria-controls","aria-expanded","home","backButton","urls","isEmbed","inject","_this10","floor","seektime","addProperty","controlPressed","_this$config","labels","parser","buildUrlParams","params","URLSearchParams","setup","isVideo","isYouTube","blob","createObjectURL","languages","userLanguage","active","trackEvents","_this$captions","meta","currentTrackNode","languageExists","mode","updateCues","setLanguage","activeClass","findTrack","_toConsumableArray","embed","enableTextTrack","has","sortIsDefault","sorted","every","getCurrentTrack","cues","activeCues","getCueAsHTML","cueText","caption","defaults","autoplay","autopause","toggleInvert","ratio","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","focused","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","start","end","all","reset","disabled","advertisement","qualityBadge","2160","1440","1080","720","576","480","sdk","iframe","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","stopped","loading","hover","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","google","publisherId","tagUrl","byline","portrait","transparent","noCookie","rel","showinfo","iv_load_policy","modestbranding","providers","types","noop","Console","onChange","first","keyCode","activeElement","shiftKey","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","overflow","viewport","hasProperty","cleanupViewport","part","Fullscreen","prefix","forceFallback","native","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","action","cancelFullScreen","exit","enter","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","pre","loadImage","minWidth","image","Image","naturalWidth","addStyleHook","build","checkPlaying","ready","setTitle","setPoster","togglePoster","enable","backgroundImage","backgroundSize","toggleControls","checkLoading","timers","recentTouchSeek","lastSeekTime","setAspectRatio","_ratio$split$map2","padding","paddingBottom","offset","transform","Listeners","lastKey","focusTimer","lastKeyDown","handleKey","setTabFocus","firstTouch","code","repeat","altKey","ctrlKey","metaKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","usingNative","timeStamp","wasKeyDown","delay","setPlayerSize","measure","rect","resized","_player$fullscreen","isEnter","_setPlayerSize","firstChild","_player$embed$ratio$s2","videoWidth","videoHeight","maxWidth","margin","setGutter","hasAudio","initialized","managerPromise","isAudio","ended","proxy","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","done","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","_map2","deltaX","deltaY","direction","sign","abs","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isCss","doc","maxTries","numRetries","beforeCallbackFn","pathStripped","onbeforeload","ev","sheet","cssText","defaultPrevented","loadjs","paths","arg1","arg2","numWaiting","loadFiles","deps","bundleIds","isDefined","factory","loadScript","assurePlaybackState","hasPlayed","Vimeo","gesture","$2","thumbnail_large","pathname","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","state","getVideoTitle","getCurrentTime","getDuration","getTextTracks","_ref$cues","strippedCues","createDocumentFragment","getPaused","seconds","env","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","getTitle","videoId","getVideoData","items","snippet","currentId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","2","5","100","101","150","onPlaybackRateChange","instance","playbackRate","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","ima","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","cuePoint","seekElement","cuePercentage","AdEvent","onAdEvent","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","LOG","adError","getMessage","cancel","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","init","zIndex","destroy","_this11","_this12","AV_PUBLISHERID","AV_CHANNELID","AV_URL","AV_WIDTH","AV_HEIGHT","AV_CDIM2","PreviewThumbnails","thumbnails","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","u","getThumbnail","vttDataString","processedList","thumbnail","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","w","h","matchTimes","endTime","urlPrefix","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","ceil","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","findIndex","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","sizeSpecifiedInCSS","thumbWidth","thumbAspectRatio","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","right","clientWidth","previewPos","multiplier","top","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","attribute","change","_sources$","_sources$$provider","crossorigin","Plyr","failed","jQuery","getProviderByUrl","search","truthy","searchParams","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","realDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","updateStorage","prev","closest","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","prod","dev","shr","count","classname","remove","add","currentType","historySupport","newSource","srclang","parentElement","cite"],"mappings":"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","file":"demo.min.js","sourcesContent":["/*\n json-stringify-safe\n Like JSON.stringify, but doesn't throw on circular references.\n\n Originally forked from https://github.com/isaacs/json-stringify-safe\n version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n and IE8 compatibility. Tests for this are in test/vendor.\n\n ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n*/\n\nexports = module.exports = stringify;\nexports.getSerialize = serializer;\n\nfunction indexOf(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) return i;\n }\n return -1;\n}\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n}\n\n// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\nfunction stringifyError(value) {\n var err = {\n // These properties are implemented as magical getters and don't show up in for in\n stack: value.stack,\n message: value.message,\n name: value.name\n };\n\n for (var i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i)) {\n err[i] = value[i];\n }\n }\n\n return err;\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [];\n var keys = [];\n\n if (cycleReplacer == null) {\n cycleReplacer = function(key, value) {\n if (stack[0] === value) {\n return '[Circular ~]';\n }\n return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n };\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = indexOf(stack, this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n if (~indexOf(stack, value)) {\n value = cycleReplacer.call(this, key, value);\n }\n } else {\n stack.push(value);\n }\n\n return replacer == null\n ? value instanceof Error ? stringifyError(value) : value\n : replacer.call(this, key, value);\n };\n}\n","var stringify = require('../vendor/json-stringify-safe/stringify');\n\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\n// Yanked from https://git.io/vS8DV re-used under CC0\n// with some tiny modifications\nfunction isError(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n}\n\nfunction isErrorEvent(value) {\n return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n}\n\nfunction isDOMError(value) {\n return Object.prototype.toString.call(value) === '[object DOMError]';\n}\n\nfunction isDOMException(value) {\n return Object.prototype.toString.call(value) === '[object DOMException]';\n}\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isPlainObject(what) {\n return Object.prototype.toString.call(what) === '[object Object]';\n}\n\nfunction isString(what) {\n return Object.prototype.toString.call(what) === '[object String]';\n}\n\nfunction isArray(what) {\n return Object.prototype.toString.call(what) === '[object Array]';\n}\n\nfunction isEmptyObject(what) {\n if (!isPlainObject(what)) return false;\n\n for (var _ in what) {\n if (what.hasOwnProperty(_)) {\n return false;\n }\n }\n return true;\n}\n\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMError() {\n try {\n new DOMError(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMException() {\n try {\n new DOMException(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsFetch() {\n if (!('fetch' in _window)) return false;\n\n try {\n new Headers(); // eslint-disable-line no-new\n new Request(''); // eslint-disable-line no-new\n new Response(); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n// https://caniuse.com/#feat=referrer-policy\n// It doesn't. And it throw exception instead of ignoring this parameter...\n// REF: https://github.com/getsentry/raven-js/issues/1233\nfunction supportsReferrerPolicy() {\n if (!supportsFetch()) return false;\n\n try {\n // eslint-disable-next-line no-new\n new Request('pickleRick', {\n referrerPolicy: 'origin'\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsPromiseRejectionEvent() {\n return typeof PromiseRejectionEvent === 'function';\n}\n\nfunction wrappedCallback(callback) {\n function dataCallback(data, original) {\n var normalizedData = callback(data) || data;\n if (original) {\n return original(normalizedData) || normalizedData;\n }\n return normalizedData;\n }\n\n return dataCallback;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value) {\n obj1[key] = value;\n });\n return obj1;\n}\n\n/**\n * This function is only used for react-native.\n * react-native freezes object that have already been sent over the\n * js bridge. We need this function in order to check if the object is frozen.\n * So it's ok that objectFrozen returns false if Object.isFrozen is not\n * supported because it's not relevant for other \"platforms\". See related issue:\n * https://github.com/getsentry/react-native-sentry/issues/57\n */\nfunction objectFrozen(obj) {\n if (!Object.isFrozen) {\n return false;\n }\n return Object.isFrozen(obj);\n}\n\nfunction truncate(str, max) {\n if (typeof max !== 'number') {\n throw new Error('2nd argument to `truncate` function should be a number');\n }\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0,\n len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not
href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n if (typeof url !== 'string') return {};\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = _window.crypto || _window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n // eslint-disable-next-line no-undef\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return (\n pad(arr[0]) +\n pad(arr[1]) +\n pad(arr[2]) +\n pad(arr[3]) +\n pad(arr[4]) +\n pad(arr[5]) +\n pad(arr[6]) +\n pad(arr[7])\n );\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n /* eslint no-extra-parens:0*/\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (\n nextStr === 'html' ||\n (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n ) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\n/**\n * Returns true if either a OR b is truthy, but not both\n */\nfunction isOnlyOneTruthy(a, b) {\n return !!(!!a ^ !!b);\n}\n\n/**\n * Returns true if both parameters are undefined\n */\nfunction isBothUndefined(a, b) {\n return isUndefined(a) && isUndefined(b);\n}\n\n/**\n * Returns true if the two input exception interfaces have the same content\n */\nfunction isSameException(ex1, ex2) {\n if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n ex1 = ex1.values[0];\n ex2 = ex2.values[0];\n\n if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n // in case both stacktraces are undefined, we can't decide so default to false\n if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\n return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n}\n\n/**\n * Returns true if the two input stack trace interfaces have the same content\n */\nfunction isSameStacktrace(stack1, stack2) {\n if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n var frames1 = stack1.frames;\n var frames2 = stack2.frames;\n\n // Exit early if stacktrace is malformed\n if (frames1 === undefined || frames2 === undefined) return false;\n\n // Exit early if frame count differs\n if (frames1.length !== frames2.length) return false;\n\n // Iterate through every frame; bail out if anything differs\n var a, b;\n for (var i = 0; i < frames1.length; i++) {\n a = frames1[i];\n b = frames2[i];\n if (\n a.filename !== b.filename ||\n a.lineno !== b.lineno ||\n a.colno !== b.colno ||\n a['function'] !== b['function']\n )\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\nfunction fill(obj, name, replacement, track) {\n if (obj == null) return;\n var orig = obj[name];\n obj[name] = replacement(orig);\n obj[name].__raven__ = true;\n obj[name].__orig__ = orig;\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns {string}\n */\nfunction safeJoin(input, delimiter) {\n if (!isArray(input)) return '';\n\n var output = [];\n\n for (var i = 0; i < input.length; i++) {\n try {\n output.push(String(input[i]));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n// Default Node.js REPL depth\nvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3;\n// 50kB, as 100kB is max payload size, so half sounds reasonable\nvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\nvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nfunction serializeValue(value) {\n if (typeof value === 'string') {\n var maxLength = 40;\n return truncate(value, maxLength);\n } else if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined'\n ) {\n return value;\n }\n\n var type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (type === '[object Object]') return '[Object]';\n if (type === '[object Array]') return '[Array]';\n if (type === '[object Function]')\n return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\n return value;\n}\n\nfunction serializeObject(value, depth) {\n if (depth === 0) return serializeValue(value);\n\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(function(acc, key) {\n acc[key] = serializeObject(value[key], depth - 1);\n return acc;\n }, {});\n } else if (Array.isArray(value)) {\n return value.map(function(val) {\n return serializeObject(val, depth - 1);\n });\n }\n\n return serializeValue(value);\n}\n\nfunction serializeException(ex, depth, maxSize) {\n if (!isPlainObject(ex)) return ex;\n\n depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\n var serialized = serializeObject(ex, depth);\n\n if (jsonSize(stringify(serialized)) > maxSize) {\n return serializeException(ex, depth - 1);\n }\n\n return serialized;\n}\n\nfunction serializeKeysForMessage(keys, maxLength) {\n if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n if (!Array.isArray(keys)) return '';\n\n keys = keys.filter(function(key) {\n return typeof key === 'string';\n });\n if (keys.length === 0) return '[object has no keys]';\n\n maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n if (keys[0].length >= maxLength) return keys[0];\n\n for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n var serialized = keys.slice(0, usedKeys).join(', ');\n if (serialized.length > maxLength) continue;\n if (usedKeys === keys.length) return serialized;\n return serialized + '\\u2026';\n }\n\n return '';\n}\n\nfunction sanitize(input, sanitizeKeys) {\n if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0))\n return input;\n\n var sanitizeRegExp = joinRegExp(sanitizeKeys);\n var sanitizeMask = '********';\n var safeInput;\n\n try {\n safeInput = JSON.parse(stringify(input));\n } catch (o_O) {\n return input;\n }\n\n function sanitizeWorker(workerInput) {\n if (isArray(workerInput)) {\n return workerInput.map(function(val) {\n return sanitizeWorker(val);\n });\n }\n\n if (isPlainObject(workerInput)) {\n return Object.keys(workerInput).reduce(function(acc, k) {\n if (sanitizeRegExp.test(k)) {\n acc[k] = sanitizeMask;\n } else {\n acc[k] = sanitizeWorker(workerInput[k]);\n }\n return acc;\n }, {});\n }\n\n return workerInput;\n }\n\n return sanitizeWorker(safeInput);\n}\n\nmodule.exports = {\n isObject: isObject,\n isError: isError,\n isErrorEvent: isErrorEvent,\n isDOMError: isDOMError,\n isDOMException: isDOMException,\n isUndefined: isUndefined,\n isFunction: isFunction,\n isPlainObject: isPlainObject,\n isString: isString,\n isArray: isArray,\n isEmptyObject: isEmptyObject,\n supportsErrorEvent: supportsErrorEvent,\n supportsDOMError: supportsDOMError,\n supportsDOMException: supportsDOMException,\n supportsFetch: supportsFetch,\n supportsReferrerPolicy: supportsReferrerPolicy,\n supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n wrappedCallback: wrappedCallback,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n objectFrozen: objectFrozen,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n isSameException: isSameException,\n isSameStacktrace: isSameStacktrace,\n parseUrl: parseUrl,\n fill: fill,\n safeJoin: safeJoin,\n serializeException: serializeException,\n serializeKeysForMessage: serializeKeysForMessage,\n sanitize: sanitize\n};\n","var utils = require('../../src/utils');\n\n/*\n TraceKit - Cross brower stack traces\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\nfunction getLocationOrigin() {\n if (typeof document === 'undefined' || document.location == null) return '';\n\n // Oh dear IE10...\n if (!document.location.origin) {\n return (\n document.location.protocol +\n '//' +\n document.location.hostname +\n (document.location.port ? ':' + document.location.port : '')\n );\n }\n\n return document.location.origin;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.
} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} msg Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n var stack = null;\n // If 'ex' is ErrorEvent, get real Error from inside\n var exception = utils.isErrorEvent(ex) ? ex.error : ex;\n // If 'msg' is ErrorEvent, get real message from inside\n var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n lastExceptionStack,\n url,\n lineNo,\n message\n );\n processLastException();\n } else if (exception && utils.isError(exception)) {\n // non-string `exception` arg; attempt to extract stack trace\n\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(exception);\n notifyHandlers(stack, true);\n } else {\n var location = {\n url: url,\n line: lineNo,\n column: colNo\n };\n\n var name = undefined;\n var groups;\n\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n name: name,\n message: message,\n url: getLocationHref(),\n stack: [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(function() {\n if (lastException === ex) {\n processLastException();\n }\n }, stack.incomplete ? 2000 : 0);\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n})();\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n // Used to additionally parse URL/line/column from eval frames\n var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n var lines = ex.stack.split('\\n');\n var stack = [];\n var submatch;\n var parts;\n var element;\n var reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: !isNative ? parts[2] : null,\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n if (element.url && element.url.substr(0, 5) === 'blob:') {\n // Special case for handling JavaScript loaded into a blob.\n // We use a synchronous AJAX request here as a blob is already in\n // memory - it's not making a network request. This will generate a warning\n // in the browser console, but there has already been an error so that's not\n // that much of an issue.\n var xhr = new XMLHttpRequest();\n xhr.open('GET', element.url, false);\n xhr.send(null);\n\n // If we failed to download the source, skip this patch\n if (xhr.status === 200) {\n var source = xhr.responseText || '';\n\n // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n source = source.slice(-300);\n\n // Now we dig out the source map URL\n var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/);\n\n // If we don't find a source map comment or we find more than one, continue on to the next element.\n if (sourceMaps) {\n var sourceMapAddress = sourceMaps[1];\n\n // Now we check to see if it's a relative URL.\n // If it is, convert it to an absolute one.\n if (sourceMapAddress.charAt(0) === '~') {\n sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n }\n\n // Now we strip the '.map' off of the end of the URL and update the\n // element so that Sentry can match the map to the blob.\n element.url = sourceMapAddress.slice(0, -4);\n }\n }\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (\n !stackInfo.stack[0].line &&\n stackInfo.stack[0].func === initial.func\n ) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (\n var curr = computeStackTraceByWalkingCallerChain.caller;\n curr && !recursion;\n curr = curr.caller\n ) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n line: null,\n column: null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n augmentStackTraceWithInitialElement(\n result,\n ex.sourceURL || ex.fileName,\n ex.line || ex.lineNumber,\n ex.message || ex.description\n );\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n return computeStackTrace;\n})();\n\nmodule.exports = TraceKit;\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 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 more info.\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 safeAdd(x, y) {\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 bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\n/*\n* These functions implement the four basic operations the algorithm uses.\n*/\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n* Calculate the MD5 of an array of little-endian words, and a bit length.\n*/\nfunction binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return [a, b, c, d];\n}\n\n/*\n* Convert an array of little-endian words to a string\n*/\nfunction binl2rstr(input) {\n var i;\n var output = '';\n var length32 = input.length * 32;\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n }\n return output;\n}\n\n/*\n* Convert a raw string to an array of little-endian words\n* Characters >255 have their high-byte silently ignored.\n*/\nfunction rstr2binl(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n var length8 = input.length * 8;\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n }\n return output;\n}\n\n/*\n* Calculate the MD5 of a raw string\n*/\nfunction rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n}\n\n/*\n* Calculate the HMAC-MD5, of a key and some data (raw strings)\n*/\nfunction rstrHMACMD5(key, data) {\n var i;\n var bkey = rstr2binl(key);\n var ipad = [];\n var opad = [];\n var hash;\n ipad[15] = opad[15] = undefined;\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8);\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n}\n\n/*\n* Convert a raw string to a hex string\n*/\nfunction rstr2hex(input) {\n var hexTab = '0123456789abcdef';\n var output = '';\n var x;\n var i;\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i);\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n* Encode a string as utf-8\n*/\nfunction str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input));\n}\n\n/*\n* Take string arguments and return either raw or hex encoded strings\n*/\nfunction rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s));\n}\nfunction hexMD5(s) {\n return rstr2hex(rawMD5(s));\n}\nfunction rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n}\nfunction hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d));\n}\n\nfunction md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string);\n }\n return rawMD5(string);\n }\n if (!raw) {\n return hexHMACMD5(key, string);\n }\n return rawHMACMD5(key, string);\n}\n\nmodule.exports = md5;\n","function RavenConfigError(message) {\n this.name = 'RavenConfigError';\n this.message = message;\n}\nRavenConfigError.prototype = new Error();\nRavenConfigError.prototype.constructor = RavenConfigError;\n\nmodule.exports = RavenConfigError;\n","var utils = require('./utils');\n\nvar wrapMethod = function(console, level, callback) {\n var originalConsoleLevel = console[level];\n var originalConsole = console;\n\n if (!(level in console)) {\n return;\n }\n\n var sentryLevel = level === 'warn' ? 'warning' : level;\n\n console[level] = function() {\n var args = [].slice.call(arguments);\n\n var msg = utils.safeJoin(args, ' ');\n var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};\n\n if (level === 'assert') {\n if (args[0] === false) {\n // Default browsers message\n msg =\n 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');\n data.extra.arguments = args.slice(1);\n callback && callback(msg, data);\n }\n } else {\n callback && callback(msg, data);\n }\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n // IE9 doesn't allow calling apply on console functions directly\n // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n }\n };\n};\n\nmodule.exports = {\n wrapMethod: wrapMethod\n};\n","/*global XDomainRequest:false */\n\nvar TraceKit = require('../vendor/TraceKit/tracekit');\nvar stringify = require('../vendor/json-stringify-safe/stringify');\nvar md5 = require('../vendor/md5/md5');\nvar RavenConfigError = require('./configError');\n\nvar utils = require('./utils');\nvar isErrorEvent = utils.isErrorEvent;\nvar isDOMError = utils.isDOMError;\nvar isDOMException = utils.isDOMException;\nvar isError = utils.isError;\nvar isObject = utils.isObject;\nvar isPlainObject = utils.isPlainObject;\nvar isUndefined = utils.isUndefined;\nvar isFunction = utils.isFunction;\nvar isString = utils.isString;\nvar isArray = utils.isArray;\nvar isEmptyObject = utils.isEmptyObject;\nvar each = utils.each;\nvar objectMerge = utils.objectMerge;\nvar truncate = utils.truncate;\nvar objectFrozen = utils.objectFrozen;\nvar hasKey = utils.hasKey;\nvar joinRegExp = utils.joinRegExp;\nvar urlencode = utils.urlencode;\nvar uuid4 = utils.uuid4;\nvar htmlTreeAsString = utils.htmlTreeAsString;\nvar isSameException = utils.isSameException;\nvar isSameStacktrace = utils.isSameStacktrace;\nvar parseUrl = utils.parseUrl;\nvar fill = utils.fill;\nvar supportsFetch = utils.supportsFetch;\nvar supportsReferrerPolicy = utils.supportsReferrerPolicy;\nvar serializeKeysForMessage = utils.serializeKeysForMessage;\nvar serializeException = utils.serializeException;\nvar sanitize = utils.sanitize;\n\nvar wrapConsoleMethod = require('./console').wrapMethod;\n\nvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\nfunction now() {\n return +new Date();\n}\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _document = _window.document;\nvar _navigator = _window.navigator;\n\nfunction keepOriginalCallback(original, callback) {\n return isFunction(callback)\n ? function(data) {\n return callback(data, original);\n }\n : callback;\n}\n\n// First, check for JSON support\n// If there is no JSON, we no-op the core features of Raven\n// since JSON is required to encode the payload\nfunction Raven() {\n this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n // Raven can run in contexts where there's no document (react-native)\n this._hasDocument = !isUndefined(_document);\n this._hasNavigator = !isUndefined(_navigator);\n this._lastCapturedException = null;\n this._lastData = null;\n this._lastEventId = null;\n this._globalServer = null;\n this._globalKey = null;\n this._globalProject = null;\n this._globalContext = {};\n this._globalOptions = {\n // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin\n release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id,\n logger: 'javascript',\n ignoreErrors: [],\n ignoreUrls: [],\n whitelistUrls: [],\n includePaths: [],\n headers: null,\n collectWindowErrors: true,\n captureUnhandledRejections: true,\n maxMessageLength: 0,\n // By default, truncates URL values to 250 chars\n maxUrlLength: 250,\n stackTraceLimit: 50,\n autoBreadcrumbs: true,\n instrument: true,\n sampleRate: 1,\n sanitizeKeys: []\n };\n this._fetchDefaults = {\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: supportsReferrerPolicy() ? 'origin' : ''\n };\n this._ignoreOnError = 0;\n this._isRavenInstalled = false;\n this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n // capture references to window.console *and* all its methods first\n // before the console plugin has a chance to monkey patch\n this._originalConsole = _window.console || {};\n this._originalConsoleMethods = {};\n this._plugins = [];\n this._startTime = now();\n this._wrappedBuiltIns = [];\n this._breadcrumbs = [];\n this._lastCapturedEvent = null;\n this._keypressTimeout;\n this._location = _window.location;\n this._lastHref = this._location && this._location.href;\n this._resetBackoff();\n\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsole) {\n this._originalConsoleMethods[method] = this._originalConsole[method];\n }\n}\n\n/*\n * The core Raven singleton\n *\n * @this {Raven}\n */\n\nRaven.prototype = {\n // Hardcode version string so that raven source can be loaded directly via\n // webpack (using a build step causes webpack #1617). Grunt verifies that\n // this value matches package.json during build.\n // See: https://github.com/getsentry/raven-js/issues/465\n VERSION: '3.27.0',\n\n debug: false,\n\n TraceKit: TraceKit, // alias to TraceKit\n\n /*\n * Configure Raven with a DSN and extra options\n *\n * @param {string} dsn The public Sentry DSN\n * @param {object} options Set of global options [optional]\n * @return {Raven}\n */\n config: function(dsn, options) {\n var self = this;\n\n if (self._globalServer) {\n this._logDebug('error', 'Error: Raven has already been configured');\n return self;\n }\n if (!dsn) return self;\n\n var globalOptions = self._globalOptions;\n\n // merge in options\n if (options) {\n each(options, function(key, value) {\n // tags and extra are special and need to be put into context\n if (key === 'tags' || key === 'extra' || key === 'user') {\n self._globalContext[key] = value;\n } else {\n globalOptions[key] = value;\n }\n });\n }\n\n self.setDSN(dsn);\n\n // \"Script error.\" is hard coded into browsers for errors that it can't read.\n // this is the result of a script being pulled in from an external domain and CORS.\n globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n // join regexp rules into one big rule\n globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);\n globalOptions.ignoreUrls = globalOptions.ignoreUrls.length\n ? joinRegExp(globalOptions.ignoreUrls)\n : false;\n globalOptions.whitelistUrls = globalOptions.whitelistUrls.length\n ? joinRegExp(globalOptions.whitelistUrls)\n : false;\n globalOptions.includePaths = joinRegExp(globalOptions.includePaths);\n globalOptions.maxBreadcrumbs = Math.max(\n 0,\n Math.min(globalOptions.maxBreadcrumbs || 100, 100)\n ); // default and hard limit is 100\n\n var autoBreadcrumbDefaults = {\n xhr: true,\n console: true,\n dom: true,\n location: true,\n sentry: true\n };\n\n var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs);\n } else if (autoBreadcrumbs !== false) {\n autoBreadcrumbs = autoBreadcrumbDefaults;\n }\n globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\n var instrumentDefaults = {\n tryCatch: true\n };\n\n var instrument = globalOptions.instrument;\n if ({}.toString.call(instrument) === '[object Object]') {\n instrument = objectMerge(instrumentDefaults, instrument);\n } else if (instrument !== false) {\n instrument = instrumentDefaults;\n }\n globalOptions.instrument = instrument;\n\n TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;\n\n // return for chaining\n return self;\n },\n\n /*\n * Installs a global window.onerror error handler\n * to capture and report uncaught exceptions.\n * At this point, install() is required to be called due\n * to the way TraceKit is set up.\n *\n * @return {Raven}\n */\n install: function() {\n var self = this;\n if (self.isSetup() && !self._isRavenInstalled) {\n TraceKit.report.subscribe(function() {\n self._handleOnErrorStackInfo.apply(self, arguments);\n });\n\n if (self._globalOptions.captureUnhandledRejections) {\n self._attachPromiseRejectionHandler();\n }\n\n self._patchFunctionToString();\n\n if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n self._instrumentTryCatch();\n }\n\n if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs();\n\n // Install all of the plugins\n self._drainPlugins();\n\n self._isRavenInstalled = true;\n }\n\n Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n return this;\n },\n\n /*\n * Set the DSN (can be called multiple time unlike config)\n *\n * @param {string} dsn The public Sentry DSN\n */\n setDSN: function(dsn) {\n var self = this,\n uri = self._parseDSN(dsn),\n lastSlash = uri.path.lastIndexOf('/'),\n path = uri.path.substr(1, lastSlash);\n\n self._dsn = dsn;\n self._globalKey = uri.user;\n self._globalSecret = uri.pass && uri.pass.substr(1);\n self._globalProject = uri.path.substr(lastSlash + 1);\n\n self._globalServer = self._getGlobalServer(uri);\n\n self._globalEndpoint =\n self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/';\n\n // Reset backoff state since we may be pointing at a\n // new project/server\n this._resetBackoff();\n },\n\n /*\n * Wrap code within a context so Raven can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n context: function(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = {};\n }\n\n return this.wrap(options, func).apply(this, args);\n },\n\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} _before A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n wrap: function(options, func, _before) {\n var self = this;\n // 1 argument has been passed, and it's not a function\n // so just return it\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n }\n\n // options is optional\n if (isFunction(options)) {\n func = options;\n options = undefined;\n }\n\n // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n if (!isFunction(func)) {\n return func;\n }\n\n // We don't wanna wrap it twice!\n try {\n if (func.__raven__) {\n return func;\n }\n\n // If this has already been wrapped in the past, return that\n if (func.__raven_wrapper__) {\n return func.__raven_wrapper__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n function wrapped() {\n var args = [],\n i = arguments.length,\n deep = !options || (options && options.deep !== false);\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n }\n\n // Recursively wrap all of a function's arguments that are\n // functions themselves.\n while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n try {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means Raven caught an error invoking your application code. This is\n // expected behavior and NOT indicative of a bug with Raven.js.\n return func.apply(this, args);\n } catch (e) {\n self._ignoreNextOnError();\n self.captureException(e, options);\n throw e;\n }\n }\n\n // copy over properties of the old function\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n wrapped.prototype = func.prototype;\n\n func.__raven_wrapper__ = wrapped;\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n wrapped.__raven__ = true;\n wrapped.__orig__ = func;\n\n return wrapped;\n },\n\n /**\n * Uninstalls the global error handler.\n *\n * @return {Raven}\n */\n uninstall: function() {\n TraceKit.report.uninstall();\n\n this._detachPromiseRejectionHandler();\n this._unpatchFunctionToString();\n this._restoreBuiltIns();\n this._restoreConsole();\n\n Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n this._isRavenInstalled = false;\n\n return this;\n },\n\n /**\n * Callback used for `unhandledrejection` event\n *\n * @param {PromiseRejectionEvent} event An object containing\n * promise: the Promise that was rejected\n * reason: the value with which the Promise was rejected\n * @return void\n */\n _promiseRejectionHandler: function(event) {\n this._logDebug('debug', 'Raven caught unhandled promise rejection:', event);\n this.captureException(event.reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n });\n },\n\n /**\n * Installs the global promise rejection handler.\n *\n * @return {raven}\n */\n _attachPromiseRejectionHandler: function() {\n this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this);\n _window.addEventListener &&\n _window.addEventListener('unhandledrejection', this._promiseRejectionHandler);\n return this;\n },\n\n /**\n * Uninstalls the global promise rejection handler.\n *\n * @return {raven}\n */\n _detachPromiseRejectionHandler: function() {\n _window.removeEventListener &&\n _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler);\n return this;\n },\n\n /**\n * Manually capture an exception and send it over to Sentry\n *\n * @param {error} ex An exception to be logged\n * @param {object} options A specific set of options for this error [optional]\n * @return {Raven}\n */\n captureException: function(ex, options) {\n options = objectMerge({trimHeadFrames: 0}, options ? options : {});\n\n if (isErrorEvent(ex) && ex.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n ex = ex.error;\n } else if (isDOMError(ex) || isDOMException(ex)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException');\n var message = ex.message ? name + ': ' + ex.message : name;\n\n return this.captureMessage(\n message,\n objectMerge(options, {\n // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well\n // but it's barely any overhead so we may at least try\n stacktrace: true,\n trimHeadFrames: options.trimHeadFrames + 1\n })\n );\n } else if (isError(ex)) {\n // we have a real Error object\n ex = ex;\n } else if (isPlainObject(ex)) {\n // If it is plain Object, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n options = this._getCaptureExceptionOptionsFromPlainObject(options, ex);\n ex = new Error(options.message);\n } else {\n // If none of previous checks were valid, then it means that\n // it's not a DOMError/DOMException\n // it's not a plain Object\n // it's not a valid ErrorEvent (one with an error property)\n // it's not an Error\n // So bail out and capture it as a simple message:\n return this.captureMessage(\n ex,\n objectMerge(options, {\n stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace\n trimHeadFrames: options.trimHeadFrames + 1\n })\n );\n }\n\n // Store the raw exception object for potential debugging and introspection\n this._lastCapturedException = ex;\n\n // TraceKit.report will re-raise any exception passed to it,\n // which means you have to wrap it in try/catch. Instead, we\n // can wrap it here and only re-raise if TraceKit.report\n // raises an exception different from the one we asked to\n // report on.\n try {\n var stack = TraceKit.computeStackTrace(ex);\n this._handleStackInfo(stack, options);\n } catch (ex1) {\n if (ex !== ex1) {\n throw ex1;\n }\n }\n\n return this;\n },\n\n _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) {\n var exKeys = Object.keys(ex).sort();\n var options = objectMerge(currentOptions, {\n message:\n 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys),\n fingerprint: [md5(exKeys)],\n extra: currentOptions.extra || {}\n });\n options.extra.__serialized__ = serializeException(ex);\n\n return options;\n },\n\n /*\n * Manually send a message to Sentry\n *\n * @param {string} msg A plain message to be captured in Sentry\n * @param {object} options A specific set of options for this message [optional]\n * @return {Raven}\n */\n captureMessage: function(msg, options) {\n // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n // early call; we'll error on the side of logging anything called before configuration since it's\n // probably something you should see:\n if (\n !!this._globalOptions.ignoreErrors.test &&\n this._globalOptions.ignoreErrors.test(msg)\n ) {\n return;\n }\n\n options = options || {};\n msg = msg + ''; // Make sure it's actually a string\n\n var data = objectMerge(\n {\n message: msg\n },\n options\n );\n\n var ex;\n // Generate a \"synthetic\" stack trace from this point.\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n // or if it catches a thrown object without a \"stack\" property.\n try {\n throw new Error(msg);\n } catch (ex1) {\n ex = ex1;\n }\n\n // null exception name so `Error` isn't prefixed to msg\n ex.name = null;\n var stack = TraceKit.computeStackTrace(ex);\n\n // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n var initialCall = isArray(stack.stack) && stack.stack[1];\n\n // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call\n // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd\n // initialCall => captureException(string) => captureMessage(string)\n if (initialCall && initialCall.func === 'Raven.captureException') {\n initialCall = stack.stack[2];\n }\n\n var fileurl = (initialCall && initialCall.url) || '';\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n // Always attempt to get stacktrace if message is empty.\n // It's the only way to provide any helpful information to the user.\n if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\n options = objectMerge(\n {\n trimHeadFrames: 0\n },\n options\n );\n // Since we know this is a synthetic trace, the top frame (this function call)\n // MUST be from Raven.js, so mark it for trimming\n // We add to the trim counter so that callers can choose to trim extra frames, such\n // as utility functions.\n options.trimHeadFrames += 1;\n\n var frames = this._prepareFrames(stack, options);\n data.stacktrace = {\n // Sentry expects frames oldest to newest\n frames: frames.reverse()\n };\n }\n\n // Make sure that fingerprint is always wrapped in an array\n if (data.fingerprint) {\n data.fingerprint = isArray(data.fingerprint)\n ? data.fingerprint\n : [data.fingerprint];\n }\n\n // Fire away!\n this._send(data);\n\n return this;\n },\n\n captureBreadcrumb: function(obj) {\n var crumb = objectMerge(\n {\n timestamp: now() / 1000\n },\n obj\n );\n\n if (isFunction(this._globalOptions.breadcrumbCallback)) {\n var result = this._globalOptions.breadcrumbCallback(crumb);\n\n if (isObject(result) && !isEmptyObject(result)) {\n crumb = result;\n } else if (result === false) {\n return this;\n }\n }\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n this._breadcrumbs.shift();\n }\n return this;\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = [].slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the breadcrumbCallback option\n *\n * @param {function} callback The callback to run which allows filtering\n * or mutating breadcrumbs\n * @return {Raven}\n */\n setBreadcrumbCallback: function(callback) {\n var original = this._globalOptions.breadcrumbCallback;\n this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function() {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = _window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function(options) {\n if (\n !_document // doesn't work without a document (React native)\n )\n return;\n\n options = objectMerge(\n {\n eventId: this.lastEventId(),\n dsn: this._dsn,\n user: this._globalContext.user || {}\n },\n options\n );\n\n if (!options.eventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n if (!options.dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var encodedOptions = [];\n\n for (var key in options) {\n if (key === 'user') {\n var user = options.user;\n if (user.name) encodedOptions.push('name=' + encode(user.name));\n if (user.email) encodedOptions.push('email=' + encode(user.email));\n } else {\n encodedOptions.push(encode(key) + '=' + encode(options[key]));\n }\n }\n var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n var script = _document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n (_document.head || _document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function() {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function() {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument) return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n if (_document.createEvent) {\n evt = _document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = _document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options)\n if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (_document.createEvent) {\n // IE9 if standards\n _document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch (e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function(evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt) return;\n\n self._lastCapturedEvent = evt;\n\n // try/catch both:\n // - accessing evt.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = htmlTreeAsString(evt.target);\n } catch (e) {\n target = '';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function(evt) {\n var target;\n try {\n target = evt.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (\n !tagName ||\n (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n )\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function() {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n _patchFunctionToString: function() {\n var self = this;\n self._originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = function() {\n if (typeof this === 'function' && this.__raven__) {\n return self._originalFunctionToString.apply(this.__orig__, arguments);\n }\n return self._originalFunctionToString.apply(this, arguments);\n };\n },\n\n _unpatchFunctionToString: function() {\n if (this._originalFunctionToString) {\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = this._originalFunctionToString;\n }\n },\n\n /**\n * Wrap timer functions and event targets to catch errors and provide\n * better metadata.\n */\n _instrumentTryCatch: function() {\n var self = this;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: orig.name || ''}\n }\n },\n originalCallback\n );\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(\n proto,\n 'addEventListener',\n function(orig) {\n return function(evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'handleEvent',\n handler: (fn && fn.name) || ''\n }\n }\n },\n fn.handleEvent\n );\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n var before, clickHandler, keypressHandler;\n\n if (\n autoBreadcrumbs &&\n autoBreadcrumbs.dom &&\n (global === 'EventTarget' || global === 'Node')\n ) {\n // NOTE: generating multiple handlers per addEventListener invocation, should\n // revisit and verify we can just use one (almost certainly)\n clickHandler = self._breadcrumbEventHandler('click');\n keypressHandler = self._keypressEventHandler();\n before = function(evt) {\n // need to intercept every DOM event in `before` argument, in case that\n // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n // see #724\n if (!evt) return;\n\n var eventType;\n try {\n eventType = evt.type;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n if (eventType === 'click') return clickHandler(evt);\n else if (eventType === 'keypress') return keypressHandler(evt);\n };\n }\n return orig.call(\n this,\n evtName,\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'addEventListener',\n handler: (fn && fn.name) || ''\n }\n }\n },\n fn,\n before\n ),\n capture,\n secure\n );\n };\n },\n wrappedBuiltIns\n );\n fill(\n proto,\n 'removeEventListener',\n function(orig) {\n return function(evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n } catch (e) {\n // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n }\n return orig.call(this, evt, fn, capture, secure);\n };\n },\n wrappedBuiltIns\n );\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n if (_window.requestAnimationFrame) {\n fill(\n _window,\n 'requestAnimationFrame',\n function(orig) {\n return function(cb) {\n return orig(\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'requestAnimationFrame',\n handler: (orig && orig.name) || ''\n }\n }\n },\n cb\n )\n );\n };\n },\n wrappedBuiltIns\n );\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload'\n ];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n },\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - XMLHttpRequests\n * - DOM interactions (click/typing)\n * - window.location changes\n * - console\n *\n * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n */\n _instrumentBreadcrumbs: function() {\n var self = this;\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: prop, handler: (orig && orig.name) || ''}\n }\n },\n orig\n );\n }); // intentionally don't track filled methods on XHR instances\n }\n }\n\n if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) {\n var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype;\n fill(\n xhrproto,\n 'open',\n function(origOpen) {\n return function(method, url) {\n // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n\n fill(\n xhrproto,\n 'send',\n function(origSend) {\n return function() {\n // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(\n xhr,\n 'onreadystatechange',\n function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'onreadystatechange',\n handler: (orig && orig.name) || ''\n }\n }\n },\n orig,\n onreadystatechangeHandler\n );\n } /* intentionally don't track this instrumentation */\n );\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n }\n\n if (autoBreadcrumbs.xhr && supportsFetch()) {\n fill(\n _window,\n 'fetch',\n function(origFetch) {\n return function() {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n } else if ('Request' in _window && fetchInput instanceof _window.Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n } else {\n url = '' + fetchInput;\n }\n\n // if Sentry key appears in URL, don't capture, as it's our own request\n if (url.indexOf(self._globalKey) !== -1) {\n return origFetch.apply(this, args);\n }\n\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n\n var fetchData = {\n method: method,\n url: url,\n status_code: null\n };\n\n return origFetch\n .apply(this, args)\n .then(function(response) {\n fetchData.status_code = response.status;\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData\n });\n\n return response;\n })\n ['catch'](function(err) {\n // if there is an error performing the request\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData,\n level: 'error'\n });\n\n throw err;\n });\n };\n },\n wrappedBuiltIns\n );\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (autoBreadcrumbs.dom && this._hasDocument) {\n if (_document.addEventListener) {\n _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n _document.addEventListener('keypress', self._keypressEventHandler(), false);\n } else if (_document.attachEvent) {\n // IE8 Compatibility\n _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n _document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = _window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushAndReplaceState =\n !isChromePackagedApp &&\n _window.history &&\n _window.history.pushState &&\n _window.history.replaceState;\n if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = _window.onpopstate;\n _window.onpopstate = function() {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n var historyReplacementFunction = function(origHistFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origHistFunction.apply(this, arguments);\n };\n };\n\n fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n }\n\n if (autoBreadcrumbs.console && 'console' in _window && console.log) {\n // console\n var consoleMethodCallback = function(msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n },\n\n _restoreBuiltIns: function() {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _restoreConsole: function() {\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsoleMethods) {\n this._originalConsole[method] = this._originalConsoleMethods[method];\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch (e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError(\n 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n );\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function(stackInfo, options) {\n options = options || {};\n options.mechanism = options.mechanism || {\n type: 'onerror',\n handled: false\n };\n\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo(stackInfo, options);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var frames = this._prepareFrames(stackInfo, options);\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames,\n options\n );\n },\n\n _prepareFrames: function(stackInfo, options) {\n var self = this;\n var frames = [];\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack, stackInfo.url);\n if (frame) {\n frames.push(frame);\n }\n });\n\n // e.g. frames captured via captureMessage throw\n if (options && options.trimHeadFrames) {\n for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n frames[j].in_app = false;\n }\n }\n }\n frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n return frames;\n },\n\n _normalizeFrame: function(frame, stackInfoUrl) {\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n function: frame.func || '?'\n };\n\n // Case when we don't have any information about the error\n // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n // Generating synthetic error doesn't add any value here\n //\n // We should probably somehow let a user know that they should fix their code\n if (!frame.url) {\n normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n }\n\n normalized.in_app = !// determine if an exception came from outside of our app\n // first we check the global includePaths list.\n (\n (!!this._globalOptions.includePaths.test &&\n !this._globalOptions.includePaths.test(normalized.filename)) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n if (\n !!this._globalOptions.ignoreErrors.test &&\n (this._globalOptions.ignoreErrors.test(message) ||\n this._globalOptions.ignoreErrors.test(prefixedMessage))\n ) {\n return;\n }\n\n var stacktrace;\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [\n {\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }\n ]\n };\n }\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n var data = objectMerge(\n {\n // sentry.interfaces.Exception\n exception: {\n values: [\n {\n type: type,\n value: message,\n stacktrace: stacktrace\n }\n ]\n },\n transaction: fileurl\n },\n options\n );\n\n var ex = data.exception.values[0];\n if (ex.type == null && ex.value === '') {\n ex.value = 'Unrecoverable error caught';\n }\n\n // Move mechanism from options to exception interface\n // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n // too much\n if (!data.exception.mechanism && data.mechanism) {\n data.exception.mechanism = data.mechanism;\n delete data.mechanism;\n }\n\n data.exception.mechanism = objectMerge(\n {\n type: 'generic',\n handled: true\n },\n data.exception.mechanism || {}\n );\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n var request = data.request;\n if (request) {\n if (request.url) {\n request.url = truncate(request.url, this._globalOptions.maxUrlLength);\n }\n if (request.Referer) {\n request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);\n }\n }\n\n if (data.breadcrumbs && data.breadcrumbs.values)\n this._trimBreadcrumbs(data.breadcrumbs);\n\n return data;\n },\n\n /**\n * Truncate breadcrumb values (right now just URLs)\n */\n _trimBreadcrumbs: function(breadcrumbs) {\n // known breadcrumb properties with urls\n // TODO: also consider arbitrary prop values that start with (https?)?://\n var urlProps = ['to', 'from', 'url'],\n urlProp,\n crumb,\n data;\n\n for (var i = 0; i < breadcrumbs.values.length; ++i) {\n crumb = breadcrumbs.values[i];\n if (\n !crumb.hasOwnProperty('data') ||\n !isObject(crumb.data) ||\n objectFrozen(crumb.data)\n )\n continue;\n\n data = objectMerge({}, crumb.data);\n for (var j = 0; j < urlProps.length; ++j) {\n urlProp = urlProps[j];\n if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength);\n }\n }\n breadcrumbs.values[i].data = data;\n }\n },\n\n _getHttpData: function() {\n if (!this._hasNavigator && !this._hasDocument) return;\n var httpData = {};\n\n if (this._hasNavigator && _navigator.userAgent) {\n httpData.headers = {\n 'User-Agent': _navigator.userAgent\n };\n }\n\n // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n if (_window.location && _window.location.href) {\n httpData.url = _window.location.href;\n }\n\n if (this._hasDocument && _document.referrer) {\n if (!httpData.headers) httpData.headers = {};\n httpData.headers.Referer = _document.referrer;\n }\n\n return httpData;\n },\n\n _resetBackoff: function() {\n this._backoffDuration = 0;\n this._backoffStart = null;\n },\n\n _shouldBackoff: function() {\n return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n },\n\n /**\n * Returns true if the in-process data payload matches the signature\n * of the previously-sent data\n *\n * NOTE: This has to be done at this level because TraceKit can generate\n * data from window.onerror WITHOUT an exception object (IE8, IE9,\n * other old browsers). This can take the form of an \"exception\"\n * data object with a single frame (derived from the onerror args).\n */\n _isRepeatData: function(current) {\n var last = this._lastData;\n\n if (\n !last ||\n current.message !== last.message || // defined for captureMessage\n current.transaction !== last.transaction // defined for captureException/onerror\n )\n return false;\n\n // Stacktrace interface (i.e. from captureMessage)\n if (current.stacktrace || last.stacktrace) {\n return isSameStacktrace(current.stacktrace, last.stacktrace);\n } else if (current.exception || last.exception) {\n // Exception interface (i.e. from captureException/onerror)\n return isSameException(current.exception, last.exception);\n }\n\n return true;\n },\n\n _setBackoffState: function(request) {\n // If we are already in a backoff state, don't change anything\n if (this._shouldBackoff()) {\n return;\n }\n\n var status = request.status;\n\n // 400 - project_id doesn't exist or some other fatal\n // 401 - invalid/revoked dsn\n // 429 - too many requests\n if (!(status === 400 || status === 401 || status === 429)) return;\n\n var retry;\n try {\n // If Retry-After is not in Access-Control-Expose-Headers, most\n // browsers will throw an exception trying to access it\n if (supportsFetch()) {\n retry = request.headers.get('Retry-After');\n } else {\n retry = request.getResponseHeader('Retry-After');\n }\n\n // Retry-After is returned in seconds\n retry = parseInt(retry, 10) * 1000;\n } catch (e) {\n /* eslint no-empty:0 */\n }\n\n this._backoffDuration = retry\n ? // If Sentry server returned a Retry-After value, use it\n retry\n : // Otherwise, double the last backoff duration (starts at 1 sec)\n this._backoffDuration * 2 || 1000;\n\n this._backoffStart = now();\n },\n\n _send: function(data) {\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n },\n httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n data = this._sanitizeData(data);\n\n // Cleanup empty properties before sending them to the server\n Object.keys(data).forEach(function(key) {\n if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) {\n delete data[key];\n }\n });\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (\n isFunction(globalOptions.shouldSendCallback) &&\n !globalOptions.shouldSendCallback(data)\n ) {\n return;\n }\n\n // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n // so drop requests until \"cool-off\" period has elapsed.\n if (this._shouldBackoff()) {\n this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n return;\n }\n\n if (typeof globalOptions.sampleRate === 'number') {\n if (Math.random() < globalOptions.sampleRate) {\n this._sendProcessedPayload(data);\n }\n } else {\n this._sendProcessedPayload(data);\n }\n },\n\n _sanitizeData: function(data) {\n return sanitize(data, this._globalOptions.sanitizeKeys);\n },\n\n _getUuid: function() {\n return uuid4();\n },\n\n _sendProcessedPayload: function(data, callback) {\n var self = this;\n var globalOptions = this._globalOptions;\n\n if (!this.isSetup()) return;\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n // but this would require copying an un-truncated copy of the data packet, which can be\n // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n this._logDebug('warn', 'Raven dropped repeat event: ', data);\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n // Store outbound payload after trim\n this._lastData = data;\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n\n // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n if (\n this._globalOptions.autoBreadcrumbs &&\n this._globalOptions.autoBreadcrumbs.sentry\n ) {\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.value\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n }\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._resetBackoff();\n\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n callback && callback();\n },\n onError: function failure(error) {\n self._logDebug('error', 'Raven transport failed to send: ', error);\n\n if (error.request) {\n self._setBackoffState(error.request);\n }\n\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n error = error || new Error('Raven send failed (no additional details provided)');\n callback && callback(error);\n }\n });\n },\n\n _makeRequest: function(opts) {\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n var url = opts.url + '?' + urlencode(opts.auth);\n\n var evaluatedHeaders = null;\n var evaluatedFetchParameters = {};\n\n if (opts.options.headers) {\n evaluatedHeaders = this._evaluateHash(opts.options.headers);\n }\n\n if (opts.options.fetchParameters) {\n evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n }\n\n if (supportsFetch()) {\n evaluatedFetchParameters.body = stringify(opts.data);\n\n var defaultFetchOptions = objectMerge({}, this._fetchDefaults);\n var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters);\n\n if (evaluatedHeaders) {\n fetchOptions.headers = evaluatedHeaders;\n }\n\n return _window\n .fetch(url, fetchOptions)\n .then(function(response) {\n if (response.ok) {\n opts.onSuccess && opts.onSuccess();\n } else {\n var error = new Error('Sentry error code: ' + response.status);\n // It's called request only to keep compatibility with XHR interface\n // and not add more redundant checks in setBackoffState method\n error.request = response;\n opts.onError && opts.onError(error);\n }\n })\n ['catch'](function() {\n opts.onError &&\n opts.onError(new Error('Sentry error code: network unavailable'));\n });\n }\n\n var request = _window.XMLHttpRequest && new _window.XMLHttpRequest();\n if (!request) return;\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function() {\n if (request.readyState !== 4) {\n return;\n } else if (request.status === 200) {\n opts.onSuccess && opts.onSuccess();\n } else if (opts.onError) {\n var err = new Error('Sentry error code: ' + request.status);\n err.request = request;\n opts.onError(err);\n }\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n if (opts.onSuccess) {\n request.onload = opts.onSuccess;\n }\n if (opts.onError) {\n request.onerror = function() {\n var err = new Error('Sentry error code: XDomainRequest');\n err.request = request;\n opts.onError(err);\n };\n }\n }\n\n request.open('POST', url);\n\n if (evaluatedHeaders) {\n each(evaluatedHeaders, function(key, value) {\n request.setRequestHeader(key, value);\n });\n }\n\n request.send(stringify(opts.data));\n },\n\n _evaluateHash: function(hash) {\n var evaluated = {};\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n var value = hash[key];\n evaluated[key] = typeof value === 'function' ? value() : value;\n }\n }\n\n return evaluated;\n },\n\n _logDebug: function(level) {\n // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n if (\n this._originalConsoleMethods[level] &&\n (this.debug || this._globalOptions.debug)\n ) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n","/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\nvar RavenConstructor = require('./raven');\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _Raven = _window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function() {\n _window.Raven = _Raven;\n return Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n\n/**\n * DISCLAIMER:\n *\n * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n *\n * It's called `Client' to be in-line with Raven Node implementation.\n *\n * HOWTO:\n *\n * import Raven from 'raven-js';\n *\n * const someAppReporter = new Raven.Client();\n * const someOtherAppReporter = new Raven.Client();\n *\n * someAppReporter.config('__DSN__', {\n * ...config goes here\n * });\n *\n * someOtherAppReporter.config('__OTHER_DSN__', {\n * ...config goes here\n * });\n *\n * someAppReporter.captureMessage(...);\n * someAppReporter.captureException(...);\n * someAppReporter.captureBreadcrumb(...);\n *\n * someOtherAppReporter.captureMessage(...);\n * someOtherAppReporter.captureException(...);\n * someOtherAppReporter.captureBreadcrumb(...);\n *\n * It should \"just work\".\n */\nmodule.exports.Client = RavenConstructor;\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\n\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nconst isUrl = input => {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n } catch (e) {\n return false;\n }\n};\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: Object.assign({}, detail, {\n plyr: this,\n }),\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach(item => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { toggleListener } from './events';\nimport is from './is';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) {\n return;\n }\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) {\n return;\n }\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) {\n return;\n }\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = existingAttributes;\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n\n // Get the parts and value\n const parts = stripped.split('=');\n const key = parts[0];\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.object(existing) && is.string(existing.class)) {\n existing.class += ` ${className}`;\n }\n\n attributes.class = className;\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return attributes;\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n if (hide) {\n element.setAttribute('hidden', '');\n } else {\n element.removeAttribute('hidden');\n }\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const matches =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return matches.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Trap focus inside container\nexport function trapFocus(element = null, toggle = false) {\n if (!is.element(element)) {\n return;\n }\n\n const focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n const trap = event => {\n // Bail if not tab key or not fullscreen\n if (event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = document.activeElement;\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, tabFocus = false) {\n if (!is.element(element)) {\n return;\n }\n\n // Set regular focus\n element.focus({ preventScroll: true });\n\n // If we want to mimic keyboard focus via tab\n if (tabFocus) {\n toggleClass(element, this.config.classNames.tabFocus);\n }\n}\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport { toggleHidden } from './elements';\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element) {\n setTimeout(() => {\n try {\n toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\n } catch (e) {\n // Do nothing\n }\n }, 0);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isEdge: window.navigator.userAgent.includes('Edge'),\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n};\n\nexport default browser;\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, playsinline) {\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari & Chrome only currently\n pip: (() => {\n if (browser.isIPhone) {\n return false;\n }\n\n // Safari\n // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n if (is.function(createElement('video').webkitSetPresentationMode)) {\n return true;\n }\n\n // Chrome\n // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n return true;\n }\n\n return false;\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n } catch (e) {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter(source => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n extend() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(source => source.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n // Get sources\n const sources = html5.getSources.call(player);\n\n // Get first match for requested size\n const source = sources.find(source => Number(source.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n player.play();\n }\n });\n\n // Load new source\n player.media.load();\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(\n new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'),\n replace.toString(),\n );\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([key, value]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text') {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) {\n return;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n } catch (e) {\n resolve(request.responseText);\n }\n } else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n\n // Set the required response type\n request.responseType = responseType;\n\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(null, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(\n `.${this.config.classNames.tooltip}`,\n );\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create