{"version":3,"file":"static/js/1580.f436e9c7.chunk.js","mappings":"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","sources":["../node_modules/fast-deep-equal/index.js","../node_modules/load-script/index.js","../node_modules/react-youtube/src/YouTube.tsx","../node_modules/sister/src/sister.js","../node_modules/youtube-player/dist/FunctionStateMap.js","../node_modules/youtube-player/dist/YouTubePlayer.js","../node_modules/youtube-player/dist/constants/PlayerStates.js","../node_modules/youtube-player/dist/eventNames.js","../node_modules/youtube-player/dist/functionNames.js","../node_modules/youtube-player/dist/index.js","../node_modules/youtube-player/dist/loadYouTubeIframeApi.js","../node_modules/youtube-player/node_modules/debug/src/browser.js","../node_modules/youtube-player/node_modules/debug/src/debug.js","../node_modules/youtube-player/node_modules/ms/index.js"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","/** @jsxRuntime classic */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport isEqual from 'fast-deep-equal';\nimport youTubePlayer from 'youtube-player';\nimport type { YouTubePlayer, Options } from 'youtube-player/dist/types';\n\n/**\n * Check whether a `props` change should result in the video being updated.\n */\nfunction shouldUpdateVideo(prevProps: YouTubeProps, props: YouTubeProps) {\n // A changing video should always trigger an update\n if (prevProps.videoId !== props.videoId) {\n return true;\n }\n\n // Otherwise, a change in the start/end time playerVars also requires a player\n // update.\n const prevVars = prevProps.opts?.playerVars || {};\n const vars = props.opts?.playerVars || {};\n\n return prevVars.start !== vars.start || prevVars.end !== vars.end;\n}\n\n/**\n * Neutralize API options that only require a video update, leaving only options\n * that require a player reset. The results can then be compared to see if a\n * player reset is necessary.\n */\nfunction filterResetOptions(opts: Options = {}) {\n return {\n ...opts,\n height: 0,\n width: 0,\n playerVars: {\n ...opts.playerVars,\n autoplay: 0,\n start: 0,\n end: 0,\n },\n };\n}\n\n/**\n * Check whether a `props` change should result in the player being reset.\n * The player is reset when the `props.opts` change, except if the only change\n * is in the `start` and `end` playerVars, because a video update can deal with\n * those.\n */\nfunction shouldResetPlayer(prevProps: YouTubeProps, props: YouTubeProps) {\n return (\n prevProps.videoId !== props.videoId || !isEqual(filterResetOptions(prevProps.opts), filterResetOptions(props.opts))\n );\n}\n\n/**\n * Check whether a props change should result in an update of player.\n */\nfunction shouldUpdatePlayer(prevProps: YouTubeProps, props: YouTubeProps) {\n return (\n prevProps.id !== props.id ||\n prevProps.className !== props.className ||\n prevProps.opts?.width !== props.opts?.width ||\n prevProps.opts?.height !== props.opts?.height ||\n prevProps.iframeClassName !== props.iframeClassName ||\n prevProps.title !== props.title\n );\n}\n\ntype YoutubePlayerCueVideoOptions = {\n videoId: string;\n startSeconds?: number;\n endSeconds?: number;\n suggestedQuality?: string;\n};\n\nexport { YouTubePlayer };\n\nexport type YouTubeEvent<T = any> = {\n data: T;\n target: YouTubePlayer;\n};\n\nexport type YouTubeProps = {\n /**\n * The YouTube video ID.\n *\n * Examples\n * - https://www.youtube.com/watch?v=XxVg_s8xAms (`XxVg_s8xAms` is the ID)\n * - https://www.youtube.com/embed/-DX3vJiqxm4 (`-DX3vJiqxm4` is the ID)\n */\n videoId?: string;\n /**\n * Custom ID for the player element\n */\n id?: string;\n /**\n * Custom class name for the player element\n */\n className?: string;\n /**\n * Custom class name for the iframe element\n */\n iframeClassName?: string;\n /**\n * Custom style for the player container element\n */\n style?: React.CSSProperties;\n /**\n * Title of the video for the iframe's title tag.\n */\n title?: React.IframeHTMLAttributes<HTMLIFrameElement>['title'];\n /**\n * Indicates how the browser should load the iframe\n * {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-loading}\n */\n loading?: React.IframeHTMLAttributes<HTMLIFrameElement>['loading'];\n /**\n * An object that specifies player options\n * {@link https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player}\n */\n opts?: Options;\n /**\n * This event fires whenever a player has finished loading and is ready to begin receiving API calls.\n * {@link https://developers.google.com/youtube/iframe_api_reference#onReady}\n */\n onReady?: (event: YouTubeEvent) => void;\n /**\n * This event fires if an error occurs in the player.\n * {@link https://developers.google.com/youtube/iframe_api_reference#onError}\n */\n onError?: (event: YouTubeEvent<number>) => void;\n /**\n * This event fires when the layer's state changes to PlayerState.PLAYING.\n */\n onPlay?: (event: YouTubeEvent<number>) => void;\n /**\n * This event fires when the layer's state changes to PlayerState.PAUSED.\n */\n onPause?: (event: YouTubeEvent<number>) => void;\n /**\n * This event fires when the layer's state changes to PlayerState.ENDED.\n */\n onEnd?: (event: YouTubeEvent<number>) => void;\n /**\n * This event fires whenever the player's state changes.\n * {@link https://developers.google.com/youtube/iframe_api_reference#onStateChange}\n */\n onStateChange?: (event: YouTubeEvent<number>) => void;\n /**\n * This event fires whenever the video playback quality changes.\n * {@link https://developers.google.com/youtube/iframe_api_reference#onPlaybackRateChange}\n */\n onPlaybackRateChange?: (event: YouTubeEvent<number>) => void;\n /**\n * This event fires whenever the video playback rate changes.\n * {@link https://developers.google.com/youtube/iframe_api_reference#onPlaybackQualityChange}\n */\n onPlaybackQualityChange?: (event: YouTubeEvent<string>) => void;\n};\n\nconst defaultProps: YouTubeProps = {\n videoId: '',\n id: '',\n className: '',\n iframeClassName: '',\n style: {},\n title: '',\n loading: undefined,\n opts: {},\n onReady: () => {},\n onError: () => {},\n onPlay: () => {},\n onPause: () => {},\n onEnd: () => {},\n onStateChange: () => {},\n onPlaybackRateChange: () => {},\n onPlaybackQualityChange: () => {},\n};\n\nconst propTypes = {\n videoId: PropTypes.string,\n id: PropTypes.string,\n className: PropTypes.string,\n iframeClassName: PropTypes.string,\n style: PropTypes.object,\n title: PropTypes.string,\n loading: PropTypes.oneOf(['lazy', 'eager']),\n opts: PropTypes.objectOf(PropTypes.any),\n onReady: PropTypes.func,\n onError: PropTypes.func,\n onPlay: PropTypes.func,\n onPause: PropTypes.func,\n onEnd: PropTypes.func,\n onStateChange: PropTypes.func,\n onPlaybackRateChange: PropTypes.func,\n onPlaybackQualityChange: PropTypes.func,\n};\n\nclass YouTube extends React.Component<YouTubeProps> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n /**\n * Expose PlayerState constants for convenience. These constants can also be\n * accessed through the global YT object after the YouTube IFrame API is instantiated.\n * https://developers.google.com/youtube/iframe_api_reference#onStateChange\n */\n static PlayerState = {\n UNSTARTED: -1,\n ENDED: 0,\n PLAYING: 1,\n PAUSED: 2,\n BUFFERING: 3,\n CUED: 5,\n };\n\n container: HTMLDivElement | null;\n internalPlayer: YouTubePlayer | null;\n\n constructor(props: any) {\n super(props);\n\n this.container = null;\n this.internalPlayer = null;\n }\n\n /**\n * Note: The `youtube-player` package that is used promisifies all YouTube\n * Player API calls, which introduces a delay of a tick before it actually\n * gets destroyed.\n *\n * The promise to destroy the player is stored here so we can make sure to\n * only re-create the Player after it's been destroyed.\n *\n * See: https://github.com/tjallingt/react-youtube/issues/355\n */\n destroyPlayerPromise: Promise<void> | undefined = undefined;\n\n componentDidMount() {\n this.createPlayer();\n }\n\n async componentDidUpdate(prevProps: YouTubeProps) {\n if (shouldUpdatePlayer(prevProps, this.props)) {\n this.updatePlayer();\n }\n\n if (shouldResetPlayer(prevProps, this.props)) {\n await this.resetPlayer();\n }\n\n if (shouldUpdateVideo(prevProps, this.props)) {\n this.updateVideo();\n }\n }\n\n componentWillUnmount() {\n this.destroyPlayer();\n }\n\n /**\n * This event fires whenever a player has finished loading and is ready to begin receiving API calls.\n * https://developers.google.com/youtube/iframe_api_reference#onReady\n */\n onPlayerReady = (event: YouTubeEvent) => this.props.onReady?.(event);\n\n /**\n * This event fires if an error occurs in the player.\n * https://developers.google.com/youtube/iframe_api_reference#onError\n */\n onPlayerError = (event: YouTubeEvent<number>) => this.props.onError?.(event);\n\n /**\n * This event fires whenever the video playback quality changes.\n * https://developers.google.com/youtube/iframe_api_reference#onStateChange\n */\n onPlayerStateChange = (event: YouTubeEvent<number>) => {\n this.props.onStateChange?.(event);\n // @ts-ignore\n switch (event.data) {\n case YouTube.PlayerState.ENDED:\n this.props.onEnd?.(event);\n break;\n\n case YouTube.PlayerState.PLAYING:\n this.props.onPlay?.(event);\n break;\n\n case YouTube.PlayerState.PAUSED:\n this.props.onPause?.(event);\n break;\n\n default:\n }\n };\n\n /**\n * This event fires whenever the video playback quality changes.\n * https://developers.google.com/youtube/iframe_api_reference#onPlaybackRateChange\n */\n onPlayerPlaybackRateChange = (event: YouTubeEvent<number>) => this.props.onPlaybackRateChange?.(event);\n\n /**\n * This event fires whenever the video playback rate changes.\n * https://developers.google.com/youtube/iframe_api_reference#onPlaybackQualityChange\n */\n onPlayerPlaybackQualityChange = (event: YouTubeEvent<string>) => this.props.onPlaybackQualityChange?.(event);\n\n /**\n * Destroy the YouTube Player using its async API and store the promise so we\n * can await before re-creating it.\n */\n destroyPlayer = () => {\n if (this.internalPlayer) {\n this.destroyPlayerPromise = this.internalPlayer.destroy().then(() => (this.destroyPlayerPromise = undefined));\n return this.destroyPlayerPromise;\n }\n return Promise.resolve();\n };\n\n /**\n * Initialize the YouTube Player API on the container and attach event handlers\n */\n createPlayer = () => {\n // do not attempt to create a player server-side, it won't work\n if (typeof document === 'undefined') return;\n if (this.destroyPlayerPromise) {\n // We need to first await the existing player to be destroyed before\n // we can re-create it.\n this.destroyPlayerPromise.then(this.createPlayer);\n return;\n }\n // create player\n const playerOpts: Options = {\n ...this.props.opts,\n // preload the `videoId` video if one is already given\n videoId: this.props.videoId,\n };\n this.internalPlayer = youTubePlayer(this.container!, playerOpts);\n // attach event handlers\n this.internalPlayer.on('ready', this.onPlayerReady as any);\n this.internalPlayer.on('error', this.onPlayerError as any);\n this.internalPlayer.on('stateChange', this.onPlayerStateChange as any);\n this.internalPlayer.on('playbackRateChange', this.onPlayerPlaybackRateChange as any);\n this.internalPlayer.on('playbackQualityChange', this.onPlayerPlaybackQualityChange as any);\n if (this.props.title || this.props.loading) {\n this.internalPlayer.getIframe().then((iframe) => {\n if (this.props.title) iframe.setAttribute('title', this.props.title);\n if (this.props.loading) iframe.setAttribute('loading', this.props.loading);\n });\n }\n };\n\n /**\n * Shorthand for destroying and then re-creating the YouTube Player\n */\n resetPlayer = () => this.destroyPlayer().then(this.createPlayer);\n\n /**\n * Method to update the id and class of the YouTube Player iframe.\n * React should update this automatically but since the YouTube Player API\n * replaced the DIV that is mounted by React we need to do this manually.\n */\n updatePlayer = () => {\n this.internalPlayer?.getIframe().then((iframe) => {\n if (this.props.id) iframe.setAttribute('id', this.props.id);\n else iframe.removeAttribute('id');\n if (this.props.iframeClassName) iframe.setAttribute('class', this.props.iframeClassName);\n else iframe.removeAttribute('class');\n if (this.props.opts && this.props.opts.width) iframe.setAttribute('width', this.props.opts.width.toString());\n else iframe.removeAttribute('width');\n if (this.props.opts && this.props.opts.height) iframe.setAttribute('height', this.props.opts.height.toString());\n else iframe.removeAttribute('height');\n if (this.props.title) iframe.setAttribute('title', this.props.title);\n else iframe.setAttribute('title', 'YouTube video player');\n if (this.props.loading) iframe.setAttribute('loading', this.props.loading);\n else iframe.removeAttribute('loading');\n });\n };\n\n /**\n * Method to return the internalPlayer object.\n */\n getInternalPlayer = () => {\n return this.internalPlayer;\n };\n\n /**\n * Call YouTube Player API methods to update the currently playing video.\n * Depending on the `opts.playerVars.autoplay` this function uses one of two\n * YouTube Player API methods to update the video.\n */\n updateVideo = () => {\n if (typeof this.props.videoId === 'undefined' || this.props.videoId === null) {\n this.internalPlayer?.stopVideo();\n return;\n }\n\n // set queueing options\n let autoplay = false;\n const opts: YoutubePlayerCueVideoOptions = {\n videoId: this.props.videoId,\n };\n\n if (this.props.opts?.playerVars) {\n autoplay = this.props.opts.playerVars.autoplay === 1;\n if ('start' in this.props.opts.playerVars) {\n opts.startSeconds = this.props.opts.playerVars.start;\n }\n if ('end' in this.props.opts.playerVars) {\n opts.endSeconds = this.props.opts.playerVars.end;\n }\n }\n\n // if autoplay is enabled loadVideoById\n if (autoplay) {\n this.internalPlayer?.loadVideoById(opts);\n return;\n }\n // default behaviour just cues the video\n this.internalPlayer?.cueVideoById(opts);\n };\n\n refContainer = (container: HTMLDivElement) => {\n this.container = container;\n };\n\n render() {\n return (\n <div className={this.props.className} style={this.props.style}>\n <div id={this.props.id} className={this.props.iframeClassName} ref={this.refContainer} />\n </div>\n );\n }\n}\n\nexport default YouTube;\n","'use strict';\n\nvar Sister;\n\n/**\n* @link https://github.com/gajus/sister for the canonical source repository\n* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause\n*/\nSister = function () {\n var sister = {},\n events = {};\n\n /**\n * @name handler\n * @function\n * @param {Object} data Event data.\n */\n\n /**\n * @param {String} name Event name.\n * @param {handler} handler\n * @return {listener}\n */\n sister.on = function (name, handler) {\n var listener = {name: name, handler: handler};\n events[name] = events[name] || [];\n events[name].unshift(listener);\n return listener;\n };\n\n /**\n * @param {listener}\n */\n sister.off = function (listener) {\n var index = events[listener.name].indexOf(listener);\n\n if (index !== -1) {\n events[listener.name].splice(index, 1);\n }\n };\n\n /**\n * @param {String} name Event name.\n * @param {Object} data Event data.\n */\n sister.trigger = function (name, data) {\n var listeners = events[name],\n i;\n\n if (listeners) {\n i = listeners.length;\n while (i--) {\n listeners[i].handler(data);\n }\n }\n };\n\n return sister;\n};\n\nmodule.exports = Sister;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _PlayerStates = require('./constants/PlayerStates');\n\nvar _PlayerStates2 = _interopRequireDefault(_PlayerStates);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n pauseVideo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PAUSED],\n stateChangeRequired: false\n },\n playVideo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING],\n stateChangeRequired: false\n },\n seekTo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING, _PlayerStates2.default.PAUSED],\n stateChangeRequired: true,\n\n // TRICKY: `seekTo` may not cause a state change if no buffering is\n // required.\n timeout: 3000\n }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _debug = require('debug');\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _functionNames = require('./functionNames');\n\nvar _functionNames2 = _interopRequireDefault(_functionNames);\n\nvar _eventNames = require('./eventNames');\n\nvar _eventNames2 = _interopRequireDefault(_eventNames);\n\nvar _FunctionStateMap = require('./FunctionStateMap');\n\nvar _FunctionStateMap2 = _interopRequireDefault(_FunctionStateMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable promise/prefer-await-to-then */\n\nvar debug = (0, _debug2.default)('youtube-player');\n\nvar YouTubePlayer = {};\n\n/**\n * Construct an object that defines an event handler for all of the YouTube\n * player events. Proxy captured events through an event emitter.\n *\n * @todo Capture event parameters.\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n */\nYouTubePlayer.proxyEvents = function (emitter) {\n var events = {};\n\n var _loop = function _loop(eventName) {\n var onEventName = 'on' + eventName.slice(0, 1).toUpperCase() + eventName.slice(1);\n\n events[onEventName] = function (event) {\n debug('event \"%s\"', onEventName, event);\n\n emitter.trigger(eventName, event);\n };\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _eventNames2.default[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var eventName = _step.value;\n\n _loop(eventName);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return events;\n};\n\n/**\n * Delays player API method execution until player state is ready.\n *\n * @todo Proxy all of the methods using Object.keys.\n * @todo See TRICKY below.\n * @param playerAPIReady Promise that resolves when player is ready.\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions.\n * @returns {Object}\n */\nYouTubePlayer.promisifyPlayer = function (playerAPIReady) {\n var strictState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var functions = {};\n\n var _loop2 = function _loop2(functionName) {\n if (strictState && _FunctionStateMap2.default[functionName]) {\n functions[functionName] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return playerAPIReady.then(function (player) {\n var stateInfo = _FunctionStateMap2.default[functionName];\n var playerState = player.getPlayerState();\n\n // eslint-disable-next-line no-warning-comments\n // TODO: Just spread the args into the function once Babel is fixed:\n // https://github.com/babel/babel/issues/4270\n //\n // eslint-disable-next-line prefer-spread\n var value = player[functionName].apply(player, args);\n\n // TRICKY: For functions like `seekTo`, a change in state must be\n // triggered given that the resulting state could match the initial\n // state.\n if (stateInfo.stateChangeRequired ||\n\n // eslint-disable-next-line no-extra-parens\n Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.indexOf(playerState) === -1) {\n return new Promise(function (resolve) {\n var onPlayerStateChange = function onPlayerStateChange() {\n var playerStateAfterChange = player.getPlayerState();\n\n var timeout = void 0;\n\n if (typeof stateInfo.timeout === 'number') {\n timeout = setTimeout(function () {\n player.removeEventListener('onStateChange', onPlayerStateChange);\n\n resolve();\n }, stateInfo.timeout);\n }\n\n if (Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.indexOf(playerStateAfterChange) !== -1) {\n player.removeEventListener('onStateChange', onPlayerStateChange);\n\n clearTimeout(timeout);\n\n resolve();\n }\n };\n\n player.addEventListener('onStateChange', onPlayerStateChange);\n }).then(function () {\n return value;\n });\n }\n\n return value;\n });\n };\n } else {\n functions[functionName] = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return playerAPIReady.then(function (player) {\n // eslint-disable-next-line no-warning-comments\n // TODO: Just spread the args into the function once Babel is fixed:\n // https://github.com/babel/babel/issues/4270\n //\n // eslint-disable-next-line prefer-spread\n return player[functionName].apply(player, args);\n });\n };\n }\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _functionNames2.default[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var functionName = _step2.value;\n\n _loop2(functionName);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return functions;\n};\n\nexports.default = YouTubePlayer;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n BUFFERING: 3,\n ENDED: 0,\n PAUSED: 2,\n PLAYING: 1,\n UNSTARTED: -1,\n VIDEO_CUED: 5\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n * `volumeChange` is not officially supported but seems to work\n * it emits an object: `{volume: 82.6923076923077, muted: false}`\n */\nexports.default = ['ready', 'stateChange', 'playbackQualityChange', 'playbackRateChange', 'error', 'apiChange', 'volumeChange'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Functions\n */\nexports.default = ['cueVideoById', 'loadVideoById', 'cueVideoByUrl', 'loadVideoByUrl', 'playVideo', 'pauseVideo', 'stopVideo', 'getVideoLoadedFraction', 'cuePlaylist', 'loadPlaylist', 'nextVideo', 'previousVideo', 'playVideoAt', 'setShuffle', 'setLoop', 'getPlaylist', 'getPlaylistIndex', 'setOption', 'mute', 'unMute', 'isMuted', 'setVolume', 'getVolume', 'seekTo', 'getPlayerState', 'getPlaybackRate', 'setPlaybackRate', 'getAvailablePlaybackRates', 'getPlaybackQuality', 'setPlaybackQuality', 'getAvailableQualityLevels', 'getCurrentTime', 'getDuration', 'removeEventListener', 'getVideoUrl', 'getVideoEmbedCode', 'getOptions', 'getOption', 'addEventListener', 'destroy', 'setSize', 'getIframe'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _sister = require('sister');\n\nvar _sister2 = _interopRequireDefault(_sister);\n\nvar _loadYouTubeIframeApi = require('./loadYouTubeIframeApi');\n\nvar _loadYouTubeIframeApi2 = _interopRequireDefault(_loadYouTubeIframeApi);\n\nvar _YouTubePlayer = require('./YouTubePlayer');\n\nvar _YouTubePlayer2 = _interopRequireDefault(_YouTubePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @typedef YT.Player\n * @see https://developers.google.com/youtube/iframe_api_reference\n * */\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player\n */\nvar youtubeIframeAPI = void 0;\n\n/**\n * A factory function used to produce an instance of YT.Player and queue function calls and proxy events of the resulting object.\n *\n * @param maybeElementId Either An existing YT.Player instance,\n * the DOM element or the id of the HTML element where the API will insert an <iframe>.\n * @param options See `options` (Ignored when using an existing YT.Player instance).\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions. Default: `false`.\n * See `FunctionStateMap.js` for supported functions and acceptable states.\n */\n\nexports.default = function (maybeElementId) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var strictState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var emitter = (0, _sister2.default)();\n\n if (!youtubeIframeAPI) {\n youtubeIframeAPI = (0, _loadYouTubeIframeApi2.default)(emitter);\n }\n\n if (options.events) {\n throw new Error('Event handlers cannot be overwritten.');\n }\n\n if (typeof maybeElementId === 'string' && !document.getElementById(maybeElementId)) {\n throw new Error('Element \"' + maybeElementId + '\" does not exist.');\n }\n\n options.events = _YouTubePlayer2.default.proxyEvents(emitter);\n\n var playerAPIReady = new Promise(function (resolve) {\n if ((typeof maybeElementId === 'undefined' ? 'undefined' : _typeof(maybeElementId)) === 'object' && maybeElementId.playVideo instanceof Function) {\n var player = maybeElementId;\n\n resolve(player);\n } else {\n // asume maybeElementId can be rendered inside\n // eslint-disable-next-line promise/catch-or-return\n youtubeIframeAPI.then(function (YT) {\n // eslint-disable-line promise/prefer-await-to-then\n var player = new YT.Player(maybeElementId, options);\n\n emitter.on('ready', function () {\n resolve(player);\n });\n\n return null;\n });\n }\n });\n\n var playerApi = _YouTubePlayer2.default.promisifyPlayer(playerAPIReady, strictState);\n\n playerApi.on = emitter.on;\n playerApi.off = emitter.off;\n\n return playerApi;\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _loadScript = require('load-script');\n\nvar _loadScript2 = _interopRequireDefault(_loadScript);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (emitter) {\n /**\n * A promise that is resolved when window.onYouTubeIframeAPIReady is called.\n * The promise is resolved with a reference to window.YT object.\n */\n var iframeAPIReady = new Promise(function (resolve) {\n if (window.YT && window.YT.Player && window.YT.Player instanceof Function) {\n resolve(window.YT);\n\n return;\n } else {\n var protocol = window.location.protocol === 'http:' ? 'http:' : 'https:';\n\n (0, _loadScript2.default)(protocol + '//www.youtube.com/iframe_api', function (error) {\n if (error) {\n emitter.trigger('error', error);\n }\n });\n }\n\n var previous = window.onYouTubeIframeAPIReady;\n\n // The API will call this function when page has finished downloading\n // the JavaScript for the player API.\n window.onYouTubeIframeAPIReady = function () {\n if (previous) {\n previous();\n }\n\n resolve(window.YT);\n };\n });\n\n return iframeAPIReady;\n};\n\nmodule.exports = exports['default'];","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n"],"names":["module","exports","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","stdOnEnd","script","cb","onload","this","onerror","Error","src","ieOnEnd","onreadystatechange","readyState","opts","head","document","getElementsByTagName","createElement","type","charset","async","attrs","attr","setAttribute","setAttributes","text","appendChild","shouldUpdateVideo","prevProps","props","_a","_b","videoId","prevVars","playerVars","vars","start","end","filterResetOptions","arguments","undefined","__spreadProps","__spreadValues","height","width","autoplay","shouldResetPlayer","isEqual","shouldUpdatePlayer","_c","_d","id","className","iframeClassName","title","propTypes","PropTypes","style","loading","onReady","onError","onPlay","onPause","onEnd","onStateChange","onPlaybackRateChange","onPlaybackQualityChange","YouTube","_React$Component","_YouTube","_this","_classCallCheck","_callSuper","destroyPlayerPromise","onPlayerReady","event","onPlayerError","onPlayerStateChange","_e","_f","_g","_h","data","PlayerState","ENDED","PLAYING","PAUSED","onPlayerPlaybackRateChange","onPlayerPlaybackQualityChange","destroyPlayer","internalPlayer","destroy","then","Promise","resolve","createPlayer","playerOpts","youTubePlayer","container","on","getIframe","iframe","resetPlayer","updatePlayer","removeAttribute","getInternalPlayer","updateVideo","startSeconds","endSeconds","loadVideoById","cueVideoById","stopVideo","refContainer","_inherits","_createClass","value","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","stop","React","ref","defaultProps","UNSTARTED","BUFFERING","CUED","YouTube_default","Sister","sister","events","name","handler","listener","unshift","off","index","indexOf","splice","trigger","listeners","defineProperty","obj","_PlayerStates","require","_PlayerStates2","__esModule","default","pauseVideo","acceptableStates","stateChangeRequired","playVideo","seekTo","timeout","_debug2","_interopRequireDefault","_functionNames2","_eventNames2","_FunctionStateMap2","debug","YouTubePlayer","emitter","_loop","eventName","onEventName","slice","toUpperCase","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","playerAPIReady","strictState","functions","_loop2","functionName","_len","args","_key","player","stateInfo","playerState","getPlayerState","apply","addEventListener","playerStateAfterChange","setTimeout","removeEventListener","clearTimeout","_len2","_key2","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","VIDEO_CUED","_typeof","_sister2","_loadYouTubeIframeApi2","_YouTubePlayer2","youtubeIframeAPI","maybeElementId","options","getElementById","proxyEvents","Function","YT","Player","playerApi","promisifyPlayer","_loadScript","_loadScript2","window","protocol","location","error","previous","onYouTubeIframeAPIReady","load","r","storage","e","process","DEBUG","log","console","formatArgs","useColors","namespace","humanize","diff","c","color","lastC","replace","match","save","namespaces","removeItem","documentElement","WebkitAppearance","firebug","exception","table","navigator","userAgent","toLowerCase","parseInt","$1","chrome","local","localStorage","localstorage","colors","formatters","j","v","JSON","stringify","message","enable","prevTime","createDebug","enabled","self","curr","Date","ms","coerce","format","formatter","val","bind","hash","charCodeAt","Math","abs","selectColor","init","stack","disable","names","skips","split","len","push","substr","test","s","m","h","d","y","plural","n","floor","ceil","str","String","exec","parseFloat","parse","isNaN","long","round","fmtShort"],"sourceRoot":""}