aboutsummaryrefslogtreecommitdiffstats
path: root/dist/plyr.polyfilled.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'dist/plyr.polyfilled.js.map')
-rw-r--r--dist/plyr.polyfilled.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/dist/plyr.polyfilled.js.map b/dist/plyr.polyfilled.js.map
index 968b102c..252380fd 100644
--- a/dist/plyr.polyfilled.js.map
+++ b/dist/plyr.polyfilled.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../node_modules/core-js/modules/_global.js","../../node_modules/core-js/modules/_core.js","../../node_modules/core-js/modules/_is-object.js","../../node_modules/core-js/modules/_an-object.js","../../node_modules/core-js/modules/_fails.js","../../node_modules/core-js/modules/_descriptors.js","../../node_modules/core-js/modules/_dom-create.js","../../node_modules/core-js/modules/_ie8-dom-define.js","../../node_modules/core-js/modules/_to-primitive.js","../../node_modules/core-js/modules/_object-dp.js","../../node_modules/core-js/modules/_property-desc.js","../../node_modules/core-js/modules/_hide.js","../../node_modules/core-js/modules/_has.js","../../node_modules/core-js/modules/_uid.js","../../node_modules/core-js/modules/_redefine.js","../../node_modules/core-js/modules/_a-function.js","../../node_modules/core-js/modules/_ctx.js","../../node_modules/core-js/modules/_export.js","../../node_modules/core-js/modules/_typed.js","../../node_modules/core-js/modules/_library.js","../../node_modules/core-js/modules/_redefine-all.js","../../node_modules/core-js/modules/_an-instance.js","../../node_modules/core-js/modules/_to-integer.js","../../node_modules/core-js/modules/_to-length.js","../../node_modules/core-js/modules/_to-index.js","../../node_modules/core-js/modules/_cof.js","../../node_modules/core-js/modules/_iobject.js","../../node_modules/core-js/modules/_defined.js","../../node_modules/core-js/modules/_to-iobject.js","../../node_modules/core-js/modules/_to-absolute-index.js","../../node_modules/core-js/modules/_array-includes.js","../../node_modules/core-js/modules/_shared.js","../../node_modules/core-js/modules/_shared-key.js","../../node_modules/core-js/modules/_object-keys-internal.js","../../node_modules/core-js/modules/_enum-bug-keys.js","../../node_modules/core-js/modules/_object-gopn.js","../../node_modules/core-js/modules/_to-object.js","../../node_modules/core-js/modules/_array-fill.js","../../node_modules/core-js/modules/_wks.js","../../node_modules/core-js/modules/_set-to-string-tag.js","../../node_modules/core-js/modules/_typed-buffer.js","../../node_modules/core-js/modules/_species-constructor.js","../../node_modules/core-js/modules/_set-species.js","../../node_modules/core-js/modules/es6.typed.array-buffer.js","../../node_modules/core-js/modules/_classof.js","../../node_modules/core-js/modules/_iterators.js","../../node_modules/core-js/modules/_is-array-iter.js","../../node_modules/core-js/modules/_object-keys.js","../../node_modules/core-js/modules/_object-dps.js","../../node_modules/core-js/modules/_html.js","../../node_modules/core-js/modules/_object-create.js","../../node_modules/core-js/modules/_object-gpo.js","../../node_modules/core-js/modules/core.get-iterator-method.js","../../node_modules/core-js/modules/_is-array.js","../../node_modules/core-js/modules/_array-species-constructor.js","../../node_modules/core-js/modules/_array-species-create.js","../../node_modules/core-js/modules/_array-methods.js","../../node_modules/core-js/modules/_add-to-unscopables.js","../../node_modules/core-js/modules/_iter-step.js","../../node_modules/core-js/modules/_iter-create.js","../../node_modules/core-js/modules/_iter-define.js","../../node_modules/core-js/modules/es6.array.iterator.js","../../node_modules/core-js/modules/_iter-detect.js","../../node_modules/core-js/modules/_array-copy-within.js","../../node_modules/core-js/modules/_object-pie.js","../../node_modules/core-js/modules/_object-gopd.js","../../node_modules/core-js/modules/_typed-array.js","../../node_modules/core-js/modules/es6.typed.int8-array.js","../../node_modules/core-js/modules/es6.typed.uint8-array.js","../../node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","../../node_modules/core-js/modules/es6.typed.int16-array.js","../../node_modules/core-js/modules/es6.typed.uint16-array.js","../../node_modules/core-js/modules/es6.typed.int32-array.js","../../node_modules/core-js/modules/es6.typed.uint32-array.js","../../node_modules/core-js/modules/es6.typed.float32-array.js","../../node_modules/core-js/modules/es6.typed.float64-array.js","../../node_modules/core-js/modules/_iter-call.js","../../node_modules/core-js/modules/_for-of.js","../../node_modules/core-js/modules/_meta.js","../../node_modules/core-js/modules/_validate-collection.js","../../node_modules/core-js/modules/_collection-strong.js","../../node_modules/core-js/modules/_set-proto.js","../../node_modules/core-js/modules/_inherit-if-required.js","../../node_modules/core-js/modules/_collection.js","../../node_modules/core-js/modules/es6.map.js","../../node_modules/core-js/modules/es6.set.js","../../node_modules/core-js/modules/_object-gops.js","../../node_modules/core-js/modules/_object-assign.js","../../node_modules/core-js/modules/_collection-weak.js","../../node_modules/core-js/modules/es6.weak-map.js","../../node_modules/core-js/modules/es6.weak-set.js","../../node_modules/core-js/modules/es6.reflect.apply.js","../../node_modules/core-js/modules/_invoke.js","../../node_modules/core-js/modules/_bind.js","../../node_modules/core-js/modules/es6.reflect.construct.js","../../node_modules/core-js/modules/es6.reflect.define-property.js","../../node_modules/core-js/modules/es6.reflect.delete-property.js","../../node_modules/core-js/modules/es6.reflect.get.js","../../node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","../../node_modules/core-js/modules/es6.reflect.get-prototype-of.js","../../node_modules/core-js/modules/es6.reflect.has.js","../../node_modules/core-js/modules/es6.reflect.is-extensible.js","../../node_modules/core-js/modules/_own-keys.js","../../node_modules/core-js/modules/es6.reflect.own-keys.js","../../node_modules/core-js/modules/es6.reflect.prevent-extensions.js","../../node_modules/core-js/modules/es6.reflect.set.js","../../node_modules/core-js/modules/es6.reflect.set-prototype-of.js","../../node_modules/core-js/modules/_task.js","../../node_modules/core-js/modules/_microtask.js","../../node_modules/core-js/modules/_new-promise-capability.js","../../node_modules/core-js/modules/_perform.js","../../node_modules/core-js/modules/_promise-resolve.js","../../node_modules/core-js/modules/es6.promise.js","../../node_modules/core-js/modules/_wks-ext.js","../../node_modules/core-js/modules/_wks-define.js","../../node_modules/core-js/modules/_enum-keys.js","../../node_modules/core-js/modules/_object-gopn-ext.js","../../node_modules/core-js/modules/es6.symbol.js","../../node_modules/core-js/modules/_object-sap.js","../../node_modules/core-js/modules/es6.object.freeze.js","../../node_modules/core-js/modules/es6.object.seal.js","../../node_modules/core-js/modules/es6.object.prevent-extensions.js","../../node_modules/core-js/modules/es6.object.is-frozen.js","../../node_modules/core-js/modules/es6.object.is-sealed.js","../../node_modules/core-js/modules/es6.object.is-extensible.js","../../node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","../../node_modules/core-js/modules/es6.object.get-prototype-of.js","../../node_modules/core-js/modules/es6.object.keys.js","../../node_modules/core-js/modules/es6.object.get-own-property-names.js","../../node_modules/core-js/modules/es6.object.assign.js","../../node_modules/core-js/modules/_same-value.js","../../node_modules/core-js/modules/es6.object.is.js","../../node_modules/core-js/modules/es6.function.name.js","../../node_modules/core-js/modules/es6.string.raw.js","../../node_modules/core-js/modules/es6.string.from-code-point.js","../../node_modules/core-js/modules/_string-at.js","../../node_modules/core-js/modules/es6.string.code-point-at.js","../../node_modules/core-js/modules/_string-repeat.js","../../node_modules/core-js/modules/es6.string.repeat.js","../../node_modules/core-js/modules/_is-regexp.js","../../node_modules/core-js/modules/_string-context.js","../../node_modules/core-js/modules/_fails-is-regexp.js","../../node_modules/core-js/modules/es6.string.starts-with.js","../../node_modules/core-js/modules/es6.string.ends-with.js","../../node_modules/core-js/modules/es6.string.includes.js","../../node_modules/core-js/modules/_flags.js","../../node_modules/core-js/modules/es6.regexp.flags.js","../../node_modules/core-js/modules/_fix-re-wks.js","../../node_modules/core-js/modules/es6.regexp.match.js","../../node_modules/core-js/modules/es6.regexp.replace.js","../../node_modules/core-js/modules/es6.regexp.split.js","../../node_modules/core-js/modules/es6.regexp.search.js","../../node_modules/core-js/modules/_create-property.js","../../node_modules/core-js/modules/es6.array.from.js","../../node_modules/core-js/modules/es6.array.of.js","../../node_modules/core-js/modules/es6.array.copy-within.js","../../node_modules/core-js/modules/es6.array.find.js","../../node_modules/core-js/modules/es6.array.find-index.js","../../node_modules/core-js/modules/es6.array.fill.js","../../node_modules/core-js/modules/es6.number.is-finite.js","../../node_modules/core-js/modules/_is-integer.js","../../node_modules/core-js/modules/es6.number.is-integer.js","../../node_modules/core-js/modules/es6.number.is-safe-integer.js","../../node_modules/core-js/modules/es6.number.is-nan.js","../../node_modules/core-js/modules/es6.number.epsilon.js","../../node_modules/core-js/modules/es6.number.min-safe-integer.js","../../node_modules/core-js/modules/es6.number.max-safe-integer.js","../../node_modules/core-js/modules/_math-log1p.js","../../node_modules/core-js/modules/es6.math.acosh.js","../../node_modules/core-js/modules/es6.math.asinh.js","../../node_modules/core-js/modules/es6.math.atanh.js","../../node_modules/core-js/modules/_math-sign.js","../../node_modules/core-js/modules/es6.math.cbrt.js","../../node_modules/core-js/modules/es6.math.clz32.js","../../node_modules/core-js/modules/es6.math.cosh.js","../../node_modules/core-js/modules/_math-expm1.js","../../node_modules/core-js/modules/es6.math.expm1.js","../../node_modules/core-js/modules/_math-fround.js","../../node_modules/core-js/modules/es6.math.fround.js","../../node_modules/core-js/modules/es6.math.hypot.js","../../node_modules/core-js/modules/es6.math.imul.js","../../node_modules/core-js/modules/es6.math.log1p.js","../../node_modules/core-js/modules/es6.math.log10.js","../../node_modules/core-js/modules/es6.math.log2.js","../../node_modules/core-js/modules/es6.math.sign.js","../../node_modules/core-js/modules/es6.math.sinh.js","../../node_modules/core-js/modules/es6.math.tanh.js","../../node_modules/core-js/modules/es6.math.trunc.js","../../node_modules/core-js/modules/es7.array.includes.js","../../node_modules/core-js/modules/_object-to-array.js","../../node_modules/core-js/modules/es7.object.values.js","../../node_modules/core-js/modules/es7.object.entries.js","../../node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","../../node_modules/core-js/modules/_string-pad.js","../../node_modules/core-js/modules/_user-agent.js","../../node_modules/core-js/modules/es7.string.pad-start.js","../../node_modules/core-js/modules/es7.string.pad-end.js","../../node_modules/core-js/modules/web.timers.js","../../node_modules/core-js/modules/web.immediate.js","../../node_modules/core-js/modules/web.dom.iterable.js","../../node_modules/regenerator-runtime/runtime.js","../../node_modules/custom-event-polyfill/custom-event-polyfill.js","../../node_modules/url-polyfill/url-polyfill.js","utils/is.js","utils/events.js","utils/elements.js","utils/animation.js","utils/browser.js","support.js","html5.js","utils/objects.js","utils/strings.js","i18n.js","utils/arrays.js","storage.js","utils/loadSprite.js","utils/time.js","controls.js","utils/fetch.js","utils/urls.js","captions.js","config/defaults.js","config/types.js","console.js","fullscreen.js","utils/loadImage.js","ui.js","listeners.js","../../node_modules/loadjs/dist/loadjs.umd.js","utils/loadScript.js","plugins/vimeo.js","plugins/youtube.js","media.js","plugins/ads.js","source.js","plyr.js","plyr.polyfilled.js"],"names":["isObject","require$$0","document","require$$1","require$$2","anObject","toPrimitive","IE8_DOM_DEFINE","dP","createDesc","has","hide","global","aFunction","core","ctx","redefine","uid","toInteger","toLength","cof","IObject","defined","min","toIObject","toAbsoluteIndex","$keys","toObject","DESCRIPTORS","toIndex","$typed","anInstance","arrayFill","redefineAll","fails","LIBRARY","setToStringTag","SPECIES","buffer","VIEW","$export","speciesConstructor","TAG","Iterators","enumBugKeys","getKeys","IE_PROTO","PROTOTYPE","dPs","ITERATOR","classof","isArray","asc","ArrayProto","create","descriptor","$iterCreate","getPrototypeOf","step","addToUnscopables","pIE","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","getIterFn","isArrayIter","call","forOf","validate","$iterDefine","setSpecies","meta","$iterDetect","inheritIfRequired","strong","gOPS","createArrayMethod","id","$has","weak","assign","invoke","bind","gOPD","getProto","Reflect","gOPN","setProto","cel","html","process","Promise","newPromiseCapability","TypeError","isNode","newPromiseCapabilityModule","perform","promiseResolve","wksExt","toString","$GOPD","$DP","gOPNExt","wks","shared","ObjectProto","USE_NATIVE","$fails","_create","enumKeys","wksDefine","$getOwnPropertyDescriptor","$getPrototypeOf","isRegExp","MATCH","context","$defineProperty","createProperty","$find","KEY","forced","floor","isInteger","log1p","sign","$expm1","abs","exp","expm1","isEnum","ownKeys","repeat","navigator","userAgent","$pad","wrap","$task","i","NAME","$iterators","this","CustomEvent","getConstructor","input","constructor","instanceOf","Boolean","is","Object","Number","isNaN","String","Function","nullOrUndefined","Array","WeakMap","NodeList","Element","Text","Event","window","TextTrackCue","VTTCue","TextTrack","string","kind","test","array","nodeList","length","object","keys","supportsPassiveListeners","supported","options","defineProperty","addEventListener","removeEventListener","e","toggleListener","elements","event","callback","toggle","passive","capture","once","empty","function","from","forEach","element","Node","events","split","eventListeners","push","type","on","off","onceCallback","args","apply","triggerEvent","bubbles","detail","dispatchEvent","unbindListeners","item","wrapper","targets","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","key","value","setAttribute","createElement","text","innerText","insertAfter","target","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","s","trim","className","replace","stripped","parts","start","charAt","class","toggleHidden","hidden","boolean","hasAttribute","removeAttribute","toggleClass","force","method","classList","contains","hasClass","matches","prototype","match","querySelectorAll","includes","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getElements","container","getElement","querySelector","getFocusElement","focused","activeElement","body","trapFocus","focusable","first","last","trap","keyCode","shiftKey","focus","preventDefault","toggleState","pressed","getAttribute","state","transitionEndEvent","find","style","undefined","repaint","offsetHeight","browser","documentMode","documentElement","platform","support","provider","playsinline","api","ui","canPlayInline","isIPhone","video","rangeInput","audio","webkitSetPresentationMode","WebKitPlaybackTargetAvailabilityEvent","media","isHTML5","canPlayType","isVideo","isAudio","range","matchMedia","html5","sources","filter","mime","source","getSources","map","player","currentTime","playing","src","onLoadedMetaData","load","play","config","blankVideo","debug","log","cloneDeep","JSON","parse","stringify","getDeep","path","reduce","obj","extend","shift","generateId","prefix","Math","random","format","getPercentage","current","max","toFixed","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toPascalCase","toCamelCase","slice","stripHTML","fragment","createDocumentFragment","innerHTML","firstChild","getHTML","i18n","seekTime","title","dedupe","indexOf","closest","prev","curr","Storage","enabled","storage","store","localStorage","getItem","json","get","setItem","removeItem","loadSprite","url","hasId","isCached","exists","getElementById","update","data","insertAdjacentElement","useStorage","cached","content","then","result","catch","getHours","parseInt","getMinutes","getSeconds","formatTime","time","displayHours","inverted","number","hours","mins","secs","controls","URL","iconUrl","location","cors","host","isIE","svg4everybody","selectors","buttons","pause","restart","rewind","fastForward","mute","pip","airplay","settings","captions","fullscreen","progress","inputs","seek","volume","display","duration","seekTooltip","classNames","tooltip","error","warn","toggleNativeControls","namespace","getIconUrl","iconPath","iconPrefix","icon","createElementNS","use","setAttributeNS","attr","badge","menu","buttonType","button","label","labelPressed","iconPressed","control","createIcon","createLabel","updateRangeFill","suffix","list","checked","radio","faux","insertAdjacentHTML","forceHours","setRange","muted","setProgress","getElementsByTagName","nodeValue","buffered","isWebkit","setProperty","tooltips","percent","clientRect","getBoundingClientRect","visible","touch","width","pageX","left","parseFloat","updateTimeDisplay","invert","invertTime","seeking","updateProgress","hasDuration","displayDuration","paused","updateSeekTooltip","setting","tabs","panes","quality","toggleTab","checkMenu","getBadge","createBadge","sort","a","b","sorting","createMenuItem","getLabel","updateSetting","pane","currentTrack","default","tracks","getTracks","track","active","language","unshift","speed","isVimeo","values","some","tab","form","show","isMenuItem","isButton","stopPropagation","open","clone","position","opacity","name","scrollWidth","height","scrollHeight","isTab","transitions","reducedMotion","size","getTabSize","restore","propertyName","createButton","createRange","createProgress","createTime","inner","home","back","setQualityMenu","getQualityOptions","setSpeedMenu","props","findElements","labels","join","fetch","responseType","resolve","reject","request","XMLHttpRequest","responseText","response","Error","statusText","send","parseUrl","safe","parser","href","buildUrlParams","params","URLSearchParams","set","isYouTube","textTracks","setCaptionsMenu","hostname","protocol","createObjectURL","blob","userLanguage","setLanguage","trackEvents","mode","updateCues","trackRemoved","currentTrackNode","firstMatch","toggleCaptions","getCurrentTrack","embed","enableTextTrack","fromLanguage","sortIsDefault","sorted","cues","activeCues","cue","getCueAsHTML","cueText","changed","caption","defaults","providers","types","getProviderByUrl","youtube","vimeo","noop","Console","console","onChange","isIos","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","x","y","overflow","fallback","Fullscreen","property","native","iosNative","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","cancelFullScreen","exitFullscreen","action","enter","exit","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","prefixes","pre","loadImage","minWidth","image","Image","handler","onload","onerror","naturalWidth","uiSupported","listeners","inject","setup","loop","updateVolume","timeUpdate","checkPlaying","isTouch","ready","setTitle","poster","backgroundImage","setPoster","durationUpdate","isEmbed","iframe","enable","posterEnabled","loadPromise","togglePoster","stopped","toggleControls","loading","timers","setTimeout","hideControls","hover","Listeners","lastKey","handleKey","toggleMenu","firstTouch","code","which","altKey","ctrlKey","metaKey","seekByKey","editable","togglePlay","increaseVolume","decreaseVolume","forward","keyboard","tabFocus","delay","hasAudio","resetOnEnd","checkLoading","ads","initialized","managerPromise","clickToPlay","ended","disableContextMenu","concat","inputEvent","proxy","defaultHandler","customHandlerKey","customHandler","hasCustomHandler","returned","showHomeTab","showTab","currentTarget","eventType","done","seekTo","toggleInvert","noTransition","webkitDirectionInvertedFromDevice","direction","deltaY","deltaX","define","loadScript","parseId","regex","$2","getAspectRatio","getRatio","w","h","ratio","assurePlaybackState","hasPlayed","setAspectRatio","Vimeo","urls","sdk","padding","paddingBottom","offset","transform","autoplay","embedContainer","thumbnail_large","pathname","Player","autopause","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","selected","setPlaybackRate","setLoop","currentSrc","getVideoUrl","all","getVideoWidth","getVideoHeight","dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","strippedCues","getPaused","frame","seconds","build","mapQualityUnit","qualities","entry","mapQualityUnits","levels","level","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","videoId","getVideoData","google","items","snippet","currentId","startsWith","posterSrc","backgroundSize","message","instance","playbackRate","getPlaybackRate","getTitle","playVideo","pauseVideo","stopVideo","getPlaybackQuality","setPlaybackQuality","getAvailablePlaybackRates","buffering","setInterval","getVideoLoadedFraction","lastBuffered","seeked","getAvailableQualityLevels","unMute","Ads","publisherId","manager","loader","cuePoints","safetyTimer","countdownTimer","ima","googleIMA","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","displayContainer","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","tagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","cuePoint","seekElement","cuePercentage","AdEvent","onAdEvent","ad","getAd","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","cancel","contentComplete","seekedTime","discardAdBreak","splice","resize","ViewMode","NORMAL","initialize","init","adError","zIndex","destroy","handlers","Date","now","base","attribute","cancelRequests","check","crossorigin","addStyleHook","insertElements","Plyr","failed","jQuery","plyr","original","tagName","searchParams","truthy","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","end","fauxDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","change","states","inline","webkitPresentationMode","t"],"mappings":"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","file":"plyr.polyfilled.js","sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","module.exports = false;\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","module.exports = {};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","exports.f = {}.propertyIsEnumerable;\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","exports.f = Object.getOwnPropertySymbols;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch(error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if(iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(value).replace(/\\+/g, ' ');\r\n };\r\n\r\n var polyfillURLSearchParams= function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { value: {} });\r\n\r\n if(typeof searchString === 'string') {\r\n if(searchString !== '') {\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for(var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n } else if(searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(value, name);\r\n });\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if(name in this._entries) {\r\n this._entries[name].push(value.toString());\r\n } else {\r\n this._entries[name] = [value.toString()];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [value.toString()];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for(var name in this._entries) {\r\n if(this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for(var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) { items.push(name); });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) { items.push(value); });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) { items.push([name, value]); });\r\n return createIterator(items);\r\n };\r\n\r\n if(iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchString = '';\r\n this.forEach(function(value, name) {\r\n if(searchString.length > 0) searchString+= '&';\r\n searchString += serializeParam(name) + '=' + serializeParam(value);\r\n });\r\n return searchString;\r\n };\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n if(!('URLSearchParams' in global) || (new URLSearchParams('?a=1').toString() !== 'a=1')) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new URL('b', 'http://a');\r\n u.pathname = 'c%20d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch(e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if(typeof url !== 'string') url = String(url);\r\n\r\n var doc = document.implementation.createHTMLDocument('');\r\n window.doc = doc;\r\n if(base) {\r\n var baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n\r\n if(anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol', 'search']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href' : {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/,'');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname' : {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/,'/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = {'http:': 80, 'https:': 443, 'ftp:': 21}[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== ''\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'searchParams': {\r\n get: function() {\r\n var searchParams = new URLSearchParams(this.search);\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n _this.search = searchParams.toString();\r\n };\r\n });\r\n return searchParams;\r\n },\r\n enumerable: true\r\n }\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if(!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch(e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\n\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst is = {\n object(input) {\n return getConstructor(input) === Object;\n },\n number(input) {\n return getConstructor(input) === Number && !Number.isNaN(input);\n },\n string(input) {\n return getConstructor(input) === String;\n },\n boolean(input) {\n return getConstructor(input) === Boolean;\n },\n function(input) {\n return getConstructor(input) === Function;\n },\n array(input) {\n return !is.nullOrUndefined(input) && Array.isArray(input);\n },\n weakMap(input) {\n return instanceOf(input, WeakMap);\n },\n nodeList(input) {\n return instanceOf(input, NodeList);\n },\n element(input) {\n return instanceOf(input, Element);\n },\n textNode(input) {\n return getConstructor(input) === Text;\n },\n event(input) {\n return instanceOf(input, Event);\n },\n cue(input) {\n return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\n },\n track(input) {\n return instanceOf(input, TextTrack) || (!is.nullOrUndefined(input) && is.string(input.kind));\n },\n url(input) {\n return !is.nullOrUndefined(input) && /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/.test(input);\n },\n nullOrUndefined(input) {\n return input === null || typeof input === 'undefined';\n },\n empty(input) {\n return (\n is.nullOrUndefined(input) ||\n ((is.string(input) || is.array(input) || is.nodeList(input)) && !input.length) ||\n (is.object(input) && !Object.keys(input).length)\n );\n },\n};\n\nexport default is;\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(elements, event, callback, toggle = false, passive = true, capture = false, once = false) {\n // Bail if no elemetns, event, or callback\n if (is.empty(elements) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // If a nodelist is passed, call itself on each node\n if (is.nodeList(elements) || is.array(elements)) {\n // Create listener for each node\n Array.from(elements).forEach(element => {\n if (element instanceof Node) {\n toggleListener.call(null, element, event, callback, toggle, passive, capture);\n }\n });\n\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 && !once) {\n // Cache event listener\n this.eventListeners.push({ elements, type, callback, options });\n }\n\n elements[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 function onceCallback(...args) {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n }\n\n toggleListener(element, events, onceCallback, true, passive, capture, true);\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 { elements, type, callback, options } = item;\n elements.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { off, on } 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 Object.entries(attributes).forEach(([\n key,\n value,\n ]) => {\n element.setAttribute(key, value);\n });\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new <element>\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 target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n // Inject the new <element>\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 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.hasAttribute('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.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 null;\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 = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || 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// Get the focused element\nexport function getFocusElement() {\n let focused = document.activeElement;\n\n if (!focused || focused === document.body) {\n focused = null;\n } else {\n focused = document.querySelector(':focus');\n }\n\n return focused;\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 = getFocusElement();\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 if (toggle) {\n on(this.elements.container, 'keydown', trap, false);\n } else {\n off(this.elements.container, 'keydown', trap, false);\n }\n}\n\n// Toggle aria-pressed state on a toggle button\n// http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles\nexport function toggleState(element, input) {\n // If multiple elements passed\n if (is.array(element) || is.nodeList(element)) {\n Array.from(element).forEach(target => toggleState(target, input));\n return;\n }\n\n // Bail if no target\n if (!is.element(element)) {\n return;\n }\n\n // Get state\n const pressed = element.getAttribute('aria-pressed') === 'true';\n const state = is.boolean(input) ? input : !pressed;\n\n // Set the attribute on target\n element.setAttribute('aria-pressed', state);\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 toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\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 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// 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 let api = false;\n let ui = false;\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\n switch (`${provider}:${type}`) {\n case 'html5:video':\n api = support.video;\n ui = api && support.rangeInput && (!browser.isIPhone || canPlayInline);\n break;\n\n case 'html5:audio':\n api = support.audio;\n ui = api && support.rangeInput;\n break;\n\n case 'youtube:video':\n case 'vimeo:video':\n api = true;\n ui = support.rangeInput && (!browser.isIPhone || canPlayInline);\n break;\n\n default:\n api = support.audio && support.video;\n ui = api && support.rangeInput;\n }\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari only currently\n pip: (() => !browser.isIPhone && is.function(createElement('video').webkitSetPresentationMode))(),\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(type) {\n const { media } = this;\n\n try {\n // Bail if no checking function\n if (!this.isHTML5 || !is.function(media.canPlayType)) {\n return false;\n }\n\n // Check directly if codecs specified\n if (type.includes('codecs=')) {\n return media.canPlayType(type).replace(/no/, '');\n }\n\n // Type specific checks\n if (this.isVideo) {\n switch (type) {\n case 'video/webm':\n return media.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/no/, '');\n\n case 'video/mp4':\n return media.canPlayType('video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"').replace(/no/, '');\n\n case 'video/ogg':\n return media.canPlayType('video/ogg; codecs=\"theora\"').replace(/no/, '');\n\n default:\n return false;\n }\n } else if (this.isAudio) {\n switch (type) {\n case 'audio/mpeg':\n return media.canPlayType('audio/mpeg;').replace(/no/, '');\n\n case 'audio/ogg':\n return media.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/no/, '');\n\n case 'audio/wav':\n return media.canPlayType('audio/wav; codecs=\"1\"').replace(/no/, '');\n\n default:\n return false;\n }\n }\n } catch (e) {\n return false;\n }\n\n // If we got this far, we're stuffed\n return false;\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // <input type=\"range\"> 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';\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\n return sources.filter(source => support.mime.call(this, source.getAttribute('type')));\n },\n\n // Get quality levels\n getQualityOptions() {\n // Get sizes from <source> 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.filter(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, playing } = player;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Restore time\n const onLoadedMetaData = () => {\n player.currentTime = currentTime;\n };\n player.once('loadedmetadata', onLoadedMetaData);\n\n // Load new source\n player.media.load();\n\n // Resume playing\n if (playing) {\n player.play();\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// 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) => (is.string(args[i]) ? args[i] : ''));\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(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\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 './utils/is';\nimport { getDeep } from './utils/objects';\nimport { replaceAll } from './utils/strings';\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 return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([\n key,\n value,\n ]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\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// 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// Sprite loader\n// ==========================================================================\n\nimport Storage from './../storage';\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 => parseInt((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => parseInt((value / 60) % 60, 10);\nexport const getSeconds = value => parseInt(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 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport i18n from './i18n';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport { createElement, emptyElement, getAttributesFromSelector, getElement, getElements, hasClass, removeElement, setAttributes, toggleClass, toggleHidden, toggleState } from './utils/elements';\nimport { once } from './utils/events';\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\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 and store references in custom controls\n // TODO: Allow settings menus with custom 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(`.${this.config.classNames.tooltip}`);\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 <svg> icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create <svg>\n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n role: 'presentation',\n focusable: 'false',\n }),\n );\n\n // Create the <use> to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n } else {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n }\n\n // Add <use> to <svg>\n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(type, attr) {\n let text = i18n.get(type, this.config);\n const attributes = Object.assign({}, attr);\n\n switch (type) {\n case 'pip':\n text = 'PIP';\n break;\n\n case 'airplay':\n text = 'AirPlay';\n break;\n\n default:\n break;\n }\n\n if ('class' in attributes) {\n attributes.class += ` ${this.config.classNames.hidden}`;\n } else {\n attributes.class = this.config.classNames.hidden;\n }\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a <button>\n createButton(buttonType, attr) {\n const button = createElement('button');\n const attributes = Object.assign({}, attr);\n let type = toCamelCase(buttonType);\n\n let toggle = false;\n let label;\n let icon;\n let labelPressed;\n let iconPressed;\n\n if (!('type' in attributes)) {\n attributes.type = 'button';\n }\n\n if ('class' in attributes) {\n if (attributes.class.includes(this.config.classNames.control)) {\n attributes.class += ` ${this.config.classNames.control}`;\n }\n } else {\n attributes.class = this.config.classNames.control;\n }\n\n // Large play button\n switch (buttonType) {\n case 'play':\n toggle = true;\n label = 'play';\n labelPressed = 'pause';\n icon = 'play';\n iconPressed = 'pause';\n break;\n\n case 'mute':\n toggle = true;\n label = 'mute';\n labelPressed = 'unmute';\n icon = 'volume';\n iconPressed = 'muted';\n break;\n\n case 'captions':\n toggle = true;\n label = 'enableCaptions';\n labelPressed = 'disableCaptions';\n icon = 'captions-off';\n iconPressed = 'captions-on';\n break;\n\n case 'fullscreen':\n toggle = true;\n label = 'enterFullscreen';\n labelPressed = 'exitFullscreen';\n icon = 'enter-fullscreen';\n iconPressed = 'exit-fullscreen';\n break;\n\n case 'play-large':\n attributes.class += ` ${this.config.classNames.control}--overlaid`;\n type = 'play';\n label = 'play';\n icon = 'play';\n break;\n\n default:\n label = type;\n icon = buttonType;\n }\n\n // Setup toggle icon and labels\n if (toggle) {\n // Icon\n button.appendChild(controls.createIcon.call(this, iconPressed, { class: 'icon--pressed' }));\n button.appendChild(controls.createIcon.call(this, icon, { class: 'icon--not-pressed' }));\n\n // Label/Tooltip\n button.appendChild(controls.createLabel.call(this, labelPressed, { class: 'label--pressed' }));\n button.appendChild(controls.createLabel.call(this, label, { class: 'label--not-pressed' }));\n\n // Add aria attributes\n attributes['aria-pressed'] = false;\n } else {\n button.appendChild(controls.createIcon.call(this, icon));\n button.appendChild(controls.createLabel.call(this, label));\n }\n\n // Merge attributes\n extend(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n\n setAttributes(button, attributes);\n\n // We have multiple play buttons\n if (type === 'play') {\n if (!is.array(this.elements.buttons[type])) {\n this.elements.buttons[type] = [];\n }\n\n this.elements.buttons[type].push(button);\n } else {\n this.elements.buttons[type] = button;\n }\n\n return button;\n },\n\n // Create an <input type='range'>\n createRange(type, attributes) {\n // Seek label\n const label = createElement(\n 'label',\n {\n for: attributes.id,\n id: `${attributes.id}-label`,\n class: this.config.classNames.hidden,\n },\n i18n.get(type, this.config),\n );\n\n // Seek input\n const input = createElement(\n 'input',\n extend(\n getAttributesFromSelector(this.config.selectors.inputs[type]),\n {\n type: 'range',\n min: 0,\n max: 100,\n step: 0.01,\n value: 0,\n autocomplete: 'off',\n // A11y fixes for https://github.com/sampotts/plyr/issues/905\n role: 'slider',\n 'aria-labelledby': `${attributes.id}-label`,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': 0,\n },\n attributes,\n ),\n );\n\n this.elements.inputs[type] = input;\n\n // Set the fill for webkit now\n controls.updateRangeFill.call(this, input);\n\n return {\n label,\n input,\n };\n },\n\n // Create a <progress>\n createProgress(type, attributes) {\n const progress = createElement(\n 'progress',\n extend(\n getAttributesFromSelector(this.config.selectors.display[type]),\n {\n min: 0,\n max: 100,\n value: 0,\n role: 'presentation',\n 'aria-hidden': true,\n },\n attributes,\n ),\n );\n\n // Create the label inside\n if (type !== 'volume') {\n progress.appendChild(createElement('span', null, '0'));\n\n let suffix = '';\n switch (type) {\n case 'played':\n suffix = i18n.get('played', this.config);\n break;\n\n case 'buffer':\n suffix = i18n.get('buffered', this.config);\n break;\n\n default:\n break;\n }\n\n progress.innerText = `% ${suffix.toLowerCase()}`;\n }\n\n this.elements.display[type] = progress;\n\n return progress;\n },\n\n // Create time display\n createTime(type) {\n const attributes = getAttributesFromSelector(this.config.selectors.display[type]);\n\n const container = createElement(\n 'div',\n extend(attributes, {\n class: `plyr__time ${attributes.class}`,\n 'aria-label': i18n.get(type, this.config),\n }),\n '00:00',\n );\n\n // Reference for updates\n this.elements.display[type] = container;\n\n return container;\n },\n\n // Create a settings menu item\n createMenuItem({ value, list, type, title, badge = null, checked = false }) {\n const item = createElement('li');\n\n const label = createElement('label', {\n class: this.config.classNames.control,\n });\n\n const radio = createElement(\n 'input',\n extend(getAttributesFromSelector(this.config.selectors.inputs[type]), {\n type: 'radio',\n name: `plyr-${type}`,\n value,\n checked,\n class: 'plyr__sr-only',\n }),\n );\n\n const faux = createElement('span', { hidden: '' });\n\n label.appendChild(radio);\n label.appendChild(faux);\n label.insertAdjacentHTML('beforeend', title);\n\n if (is.element(badge)) {\n label.appendChild(badge);\n }\n\n item.appendChild(label);\n list.appendChild(item);\n },\n\n // Update the displayed time\n updateTimeDisplay(target = null, time = 0, inverted = false) {\n // Bail if there's no element to display or the value isn't a number\n if (!is.element(target) || !is.number(time)) {\n return;\n }\n\n // Always display hours if duration is over an hour\n const forceHours = getHours(this.duration) > 0;\n\n // eslint-disable-next-line no-param-reassign\n target.innerText = formatTime(time, forceHours, inverted);\n },\n\n // Update volume UI and storage\n updateVolume() {\n if (!this.supported.ui) {\n return;\n }\n\n // Update range\n if (is.element(this.elements.inputs.volume)) {\n controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n }\n\n // Update mute state\n if (is.element(this.elements.buttons.mute)) {\n toggleState(this.elements.buttons.mute, this.muted || this.volume === 0);\n }\n },\n\n // Update seek value and lower fill\n setRange(target, value = 0) {\n if (!is.element(target)) {\n return;\n }\n\n // eslint-disable-next-line\n target.value = value;\n\n // Webkit range fill\n controls.updateRangeFill.call(this, target);\n },\n\n // Update <progress> elements\n updateProgress(event) {\n if (!this.supported.ui || !is.event(event)) {\n return;\n }\n\n let value = 0;\n\n const setProgress = (target, input) => {\n const value = is.number(input) ? input : 0;\n const progress = is.element(target) ? target : this.elements.display.buffer;\n\n // Update value and label\n if (is.element(progress)) {\n progress.value = value;\n\n // Update text label inside\n const label = progress.getElementsByTagName('span')[0];\n if (is.element(label)) {\n label.childNodes[0].nodeValue = value;\n }\n }\n };\n\n if (event) {\n switch (event.type) {\n // Video playing\n case 'timeupdate':\n case 'seeking':\n case 'seeked':\n value = getPercentage(this.currentTime, this.duration);\n\n // Set seek range value only if it's a 'natural' time event\n if (event.type === 'timeupdate') {\n controls.setRange.call(this, this.elements.inputs.seek, value);\n }\n\n break;\n\n // Check buffer status\n case 'playing':\n case 'progress':\n setProgress(this.elements.display.buffer, this.buffered * 100);\n\n break;\n\n default:\n break;\n }\n }\n },\n\n // Webkit polyfill for lower fill range\n updateRangeFill(target) {\n // Get range from event if event passed\n const range = is.event(target) ? target.target : target;\n\n // Needs to be a valid <input type='range'>\n if (!is.element(range) || range.getAttribute('type') !== 'range') {\n return;\n }\n\n // Set aria value for https://github.com/sampotts/plyr/issues/905\n range.setAttribute('aria-valuenow', range.value);\n\n // WebKit only\n if (!browser.isWebkit) {\n return;\n }\n\n // Set CSS custom property\n range.style.setProperty('--value', `${range.value / range.max * 100}%`);\n },\n\n // Update hover tooltip for seeking\n updateSeekTooltip(event) {\n // Bail if setting not true\n if (!this.config.tooltips.seek || !is.element(this.elements.inputs.seek) || !is.element(this.elements.display.seekTooltip) || this.duration === 0) {\n return;\n }\n\n // Calculate percentage\n let percent = 0;\n const clientRect = this.elements.progress.getBoundingClientRect();\n const visible = `${this.config.classNames.tooltip}--visible`;\n\n const toggle = toggle => {\n toggleClass(this.elements.display.seekTooltip, visible, toggle);\n };\n\n // Hide on touch\n if (this.touch) {\n toggle(false);\n return;\n }\n\n // Determine percentage, if already visible\n if (is.event(event)) {\n percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n } else {\n return;\n }\n\n // Set bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Display the time a click would seek to\n controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, this.duration / 100 * percent);\n\n // Set position\n this.elements.display.seekTooltip.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && [\n 'mouseenter',\n 'mouseleave',\n ].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert);\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no ui or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleTab(setting, toggle) {\n toggleHidden(this.elements.settings.tabs[setting], !toggle);\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panes.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panes.quality.querySelector('ul');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleTab.call(this, type, toggle);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Empty the menu\n emptyElement(list);\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = quality => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach(quality => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}&times;`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panes[setting];\n let value = null;\n let list = container;\n\n switch (setting) {\n case 'captions':\n value = this.currentTrack;\n break;\n\n default:\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n\n break;\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('ul');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.tabs[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`input[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panes.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panes.loop.querySelector('ul');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.tabs.loop, false);\n toggleHidden(this.elements.settings.panes.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleTab.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panes.captions.querySelector('ul');\n const tracks = captions.getTracks.call(this);\n\n // Toggle the pane and tab\n controls.toggleTab.call(this, type, tracks.length);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!tracks.length) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.active && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.active,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu(options) {\n // Do nothing if not selected\n if (!this.config.controls.includes('settings') || !this.config.settings.includes('speed')) {\n return;\n }\n\n // Menu required\n if (!is.element(this.elements.settings.panes.speed)) {\n return;\n }\n\n const type = 'speed';\n\n // Set the speed options\n if (is.array(options)) {\n this.options.speed = options;\n } else if (this.isHTML5 || this.isVimeo) {\n this.options.speed = [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 1.75,\n 2,\n ];\n }\n\n // Set options if passed and filter based on config\n this.options.speed = this.options.speed.filter(speed => this.config.speed.options.includes(speed));\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleTab.call(this, type, toggle);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the list to populate\n const list = this.elements.settings.panes.speed.querySelector('ul');\n\n // Empty the menu\n emptyElement(list);\n\n // Create items\n this.options.speed.forEach(speed => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { tabs } = this.elements.settings;\n const visible = !is.empty(tabs) && Object.values(tabs).some(tab => !tab.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Show/hide menu\n toggleMenu(event) {\n const { form } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(form) || !is.element(button)) {\n return;\n }\n\n const show = is.boolean(event) ? event : is.element(form) && form.hasAttribute('hidden');\n\n if (is.event(event)) {\n const isMenuItem = is.element(form) && form.contains(event.target);\n const isButton = event.target === this.elements.buttons.settings;\n\n // If the click was inside the form or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && !isButton && show)) {\n return;\n }\n\n // Prevent the toggle being caught by the doc listener\n if (isButton) {\n event.stopPropagation();\n }\n }\n\n // Set form and button attributes\n if (is.element(button)) {\n button.setAttribute('aria-expanded', show);\n }\n\n if (is.element(form)) {\n toggleHidden(form, !show);\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n if (show) {\n form.removeAttribute('tabindex');\n } else {\n form.setAttribute('tabindex', -1);\n }\n }\n },\n\n // Get the natural size of a tab\n getTabSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Prevent input's being unchecked due to the name being identical\n Array.from(clone.querySelectorAll('input[name]')).forEach(input => {\n const name = input.getAttribute('name');\n input.setAttribute('name', `${name}-clone`);\n });\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Toggle Menu\n showTab(target = '') {\n const { menu } = this.elements.settings;\n const pane = document.getElementById(target);\n\n // Nothing to show, bail\n if (!is.element(pane)) {\n return;\n }\n\n // Are we targetting a tab? If not, bail\n const isTab = pane.getAttribute('role') === 'tabpanel';\n if (!isTab) {\n return;\n }\n\n // Hide all other tabs\n // Get other tabs\n const current = menu.querySelector('[role=\"tabpanel\"]:not([hidden])');\n const container = current.parentNode;\n\n // Set other toggles to be expanded false\n Array.from(menu.querySelectorAll(`[aria-controls=\"${current.getAttribute('id')}\"]`)).forEach(toggle => {\n toggle.setAttribute('aria-expanded', false);\n });\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getTabSize.call(this, pane);\n\n // Restore auto height/width\n const restore = e => {\n // We're only bothered about height and width on the container\n if (e.target !== container || ![\n 'width',\n 'height',\n ].includes(e.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n };\n\n // Listen for the transition finishing and restore auto height/width\n once(container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n current.setAttribute('tabindex', -1);\n\n // Set attributes on target\n toggleHidden(pane, false);\n\n const tabs = getElements.call(this, `[aria-controls=\"${target}\"]`);\n Array.from(tabs).forEach(tab => {\n tab.setAttribute('aria-expanded', true);\n });\n pane.removeAttribute('tabindex');\n\n // Focus the first item\n pane.querySelectorAll('button:not(:disabled), input:not(:disabled), [tabindex]')[0].focus();\n },\n\n // Build the default HTML\n // TODO: Set order based on order in the config.controls array?\n create(data) {\n // Do nothing if we want no controls\n if (is.empty(this.config.controls)) {\n return null;\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n\n // Restart button\n if (this.config.controls.includes('restart')) {\n container.appendChild(controls.createButton.call(this, 'restart'));\n }\n\n // Rewind button\n if (this.config.controls.includes('rewind')) {\n container.appendChild(controls.createButton.call(this, 'rewind'));\n }\n\n // Play/Pause button\n if (this.config.controls.includes('play')) {\n container.appendChild(controls.createButton.call(this, 'play'));\n }\n\n // Fast forward button\n if (this.config.controls.includes('fast-forward')) {\n container.appendChild(controls.createButton.call(this, 'fast-forward'));\n }\n\n // Progress\n if (this.config.controls.includes('progress')) {\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n const seek = controls.createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n });\n progress.appendChild(seek.label);\n progress.appendChild(seek.input);\n\n // Buffer progress\n progress.appendChild(controls.createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n container.appendChild(this.elements.progress);\n }\n\n // Media current time display\n if (this.config.controls.includes('current-time')) {\n container.appendChild(controls.createTime.call(this, 'currentTime'));\n }\n\n // Media duration display\n if (this.config.controls.includes('duration')) {\n container.appendChild(controls.createTime.call(this, 'duration'));\n }\n\n // Toggle mute button\n if (this.config.controls.includes('mute')) {\n container.appendChild(controls.createButton.call(this, 'mute'));\n }\n\n // Volume range control\n if (this.config.controls.includes('volume')) {\n const volume = createElement('div', {\n class: 'plyr__volume',\n });\n\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n const range = controls.createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n );\n volume.appendChild(range.label);\n volume.appendChild(range.input);\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle captions button\n if (this.config.controls.includes('captions')) {\n container.appendChild(controls.createButton.call(this, 'captions'));\n }\n\n // Settings button / menu\n if (this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n const menu = createElement('div', {\n class: 'plyr__menu',\n hidden: '',\n });\n\n menu.appendChild(\n controls.createButton.call(this, 'settings', {\n id: `plyr-settings-toggle-${data.id}`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const form = createElement('form', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n 'aria-labelled-by': `plyr-settings-toggle-${data.id}`,\n role: 'tablist',\n tabindex: -1,\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n 'aria-labelled-by': `plyr-settings-toggle-${data.id}`,\n role: 'tabpanel',\n });\n\n // Create the tab list\n const tabs = createElement('ul', {\n role: 'tablist',\n });\n\n // Build the tabs\n this.config.settings.forEach(type => {\n const tab = createElement('li', {\n role: 'tab',\n hidden: '',\n });\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n id: `plyr-settings-${data.id}-${type}-tab`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}-${type}`,\n 'aria-expanded': false,\n }),\n i18n.get(type, this.config),\n );\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n button.appendChild(value);\n tab.appendChild(button);\n tabs.appendChild(tab);\n\n this.elements.settings.tabs[type] = tab;\n });\n\n home.appendChild(tabs);\n inner.appendChild(home);\n\n // Build the panes\n this.config.settings.forEach(type => {\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n 'aria-labelled-by': `plyr-settings-${data.id}-${type}-tab`,\n role: 'tabpanel',\n tabindex: -1,\n });\n\n const back = createElement(\n 'button',\n {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}-home`,\n 'aria-expanded': false,\n },\n i18n.get(type, this.config),\n );\n\n pane.appendChild(back);\n\n const options = createElement('ul');\n\n pane.appendChild(options);\n inner.appendChild(pane);\n\n this.elements.settings.panes[type] = pane;\n });\n\n form.appendChild(inner);\n menu.appendChild(form);\n container.appendChild(menu);\n\n this.elements.settings.form = form;\n this.elements.settings.menu = menu;\n }\n\n // Picture in picture button\n if (this.config.controls.includes('pip') && support.pip) {\n container.appendChild(controls.createButton.call(this, 'pip'));\n }\n\n // Airplay button\n if (this.config.controls.includes('airplay') && support.airplay) {\n container.appendChild(controls.createButton.call(this, 'airplay'));\n }\n\n // Toggle fullscreen button\n if (this.config.controls.includes('fullscreen')) {\n container.appendChild(controls.createButton.call(this, 'fullscreen'));\n }\n\n // Larger overlaid play button\n if (this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(controls.createButton.call(this, 'play-large'));\n }\n\n this.elements.controls = container;\n\n if (this.isHTML5) {\n controls.setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n controls.setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n if (is.string(this.config.controls) || is.element(this.config.controls)) {\n // String or HTMLElement passed as the option\n container = this.config.controls;\n } else if (is.function(this.config.controls)) {\n // A custom function to build controls\n // The function can return a HTMLElement or String\n container = this.config.controls.call(this, props);\n } else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = input => {\n let result = input;\n\n Object.entries(props).forEach(([\n key,\n value,\n ]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n } else if (is.element(container)) {\n container.innerHTML = replace(container.innerHTML);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML\n if (is.element(container)) {\n target.appendChild(container);\n } else if (container) {\n target.insertAdjacentHTML('beforeend', container);\n }\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Edge sometimes doesn't finish the paint so force a redraw\n if (window.navigator.userAgent.includes('Edge')) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const labels = getElements.call(\n this,\n [\n this.config.selectors.controls.wrapper,\n ' ',\n this.config.selectors.labels,\n ' .',\n this.config.classNames.hidden,\n ].join(''),\n );\n\n Array.from(labels).forEach(label => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n label.setAttribute('role', 'tooltip');\n });\n }\n },\n};\n\nexport default controls;\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.statusText);\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// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n if (!is.object(input)) {\n return '';\n }\n\n const params = new URLSearchParams();\n\n Object.entries(input).forEach(([\n key,\n value,\n ]) => {\n params.set(key, value);\n });\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport i18n from './i18n';\nimport support from './support';\nimport browser from './utils/browser';\nimport { createElement, emptyElement, getAttributesFromSelector, insertAfter, removeElement, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (is.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach(track => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (url !== null && url.hostname !== window.location.href.hostname && [\n 'http:',\n 'https:',\n ].includes(url.protocol)) {\n fetch(src, 'blob')\n .then(blob => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Try to load the value from storage\n let active = this.storage.get('captions');\n\n // Otherwise fall back to the default config\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n // Get language from storage, fallback to config\n let language = this.storage.get('language') || this.config.captions.language;\n if (language === 'auto') {\n [language] = (navigator.language || navigator.userLanguage).split('-');\n }\n // Set language and show if active\n captions.setLanguage.call(this, language, active);\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { language, meta } = this.captions;\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks.filter(track => !meta.get(track)).forEach(track => {\n this.debug.log('Track added', track);\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n track.mode = 'hidden';\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n const trackRemoved = !tracks.find(track => track === this.captions.currentTrackNode);\n const firstMatch = this.language !== language && tracks.find(track => track.language === language);\n\n // Update language if removed or first matching track added\n if (trackRemoved || firstMatch) {\n captions.setLanguage.call(this, language, this.config.captions.active);\n }\n\n // Enable or disable captions based on track length\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n\n // Update available languages in list\n if ((this.config.controls || []).includes('settings') && this.config.settings.includes('captions')) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n set(index, setLanguage = true, show = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n this.toggleCaptions(false);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = captions.getCurrentTrack.call(this);\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Prevent setting language in some cases, since it can violate user's intentions\n if (setLanguage) {\n this.captions.language = language;\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n\n // Show captions\n if (show) {\n this.toggleCaptions(true);\n }\n },\n\n setLanguage(language, show = true) {\n if (!is.string(language)) {\n this.debug.warn('Invalid language argument', language);\n return;\n }\n // Normalize\n this.captions.language = language.toLowerCase();\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.getCurrentTrack.call(this, true);\n captions.set.call(this, tracks.indexOf(track), false, show);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks.filter(track => !this.isHTML5 || update || this.captions.meta.has(track)).filter(track => [\n 'captions',\n 'subtitles',\n ].includes(track.kind));\n },\n\n // Get the current track for the current language\n getCurrentTrack(fromLanguage = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n return (!fromLanguage && tracks[this.currentTrack]) || sorted.find(track => track.language === this.captions.language) || sorted[0];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.active) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Aspect ratio (for embeds)\n ratio: '16:9',\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.3.12/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n options: [\n 4320,\n 2880,\n 2160,\n 1440,\n 1080,\n 720,\n 576,\n 480,\n 360,\n 240,\n 'default', // YouTube's \"auto\"\n ],\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n options: [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 1.75,\n 2,\n ],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback for vintage browsers\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n 'fullscreen',\n ],\n settings: [\n 'captions',\n 'quality',\n 'speed',\n ],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/v2/video/{0}.json',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n 'qualitychange',\n 'qualityrequested',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n menu: {\n quality: '.js-plyr__menu__list--quality',\n },\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isIos: 'plyr--is-ios',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n tabFocus: 'plyr__tab-focus',\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n },\n },\n\n // API keys\n keys: {\n google: null,\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nconst noop = () => {};\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n get warn() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n get error() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { hasClass, toggleClass, toggleState, trapFocus } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nfunction onChange() {\n if (!this.enabled) {\n return;\n }\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n toggleState(button, this.active);\n }\n\n // Trigger an event\n triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n\n // Trap focus in container\n if (!browser.isIos) {\n trapFocus.call(this.player, this.target, this.active);\n }\n}\n\nfunction toggleFallback(toggle = false) {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX || 0,\n y: window.scrollY || 0,\n };\n } else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Toggle button and fire events\n onChange.call(this);\n}\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`, () => {\n // TODO: Filter for target??\n onChange.call(this);\n });\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', event => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.toggle();\n });\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get native() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) {\n return '';\n }\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = [\n 'webkit',\n 'moz',\n 'ms',\n ];\n\n prefixes.some(pre => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is enabled\n get enabled() {\n return (\n (Fullscreen.native || this.player.config.fullscreen.fallback) &&\n this.player.config.fullscreen.enabled &&\n this.player.supported.ui &&\n this.player.isVideo\n );\n }\n\n // Get active state\n get active() {\n if (!this.enabled) {\n return false;\n }\n\n // Fallback using classname\n if (!Fullscreen.native) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];\n\n return element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.container;\n }\n\n // Update UI\n update() {\n if (this.enabled) {\n this.player.debug.log(`${Fullscreen.native ? 'Native' : 'Fallback'} fullscreen enabled`);\n } else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n }\n\n // Make an element fullscreen\n enter() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.playing) {\n this.target.webkitEnterFullscreen();\n }\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, true);\n } else if (!this.prefix) {\n this.target.requestFullscreen();\n } else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n }\n\n // Bail from fullscreen\n exit() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitExitFullscreen();\n this.player.play();\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, false);\n } else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n } else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n }\n\n // Toggle state\n toggle() {\n if (!this.active) {\n this.enter();\n } else {\n this.exit();\n }\n }\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport i18n from './i18n';\nimport support from './support';\nimport browser from './utils/browser';\nimport { getElement, toggleClass, toggleState } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport loadImage from './utils/loadImage';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n } else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(this.elements.container, this.config.classNames.pip.supported, support.pip && this.isHTML5 && this.isVideo);\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add iOS class\n toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster && this.elements.poster && !this.elements.poster.style.backgroundImage) {\n ui.setPoster.call(this, this.poster);\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n\n // Set container label\n this.elements.container.setAttribute('aria-label', this.config.title);\n }\n\n // If there's a play button, set label\n if (is.nodeList(this.elements.buttons.play)) {\n Array.from(this.elements.buttons.play).forEach(button => {\n button.setAttribute('aria-label', label);\n });\n }\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n setPoster(poster) {\n // Set property regardless of validity\n this.media.setAttribute('poster', poster);\n\n // Bail if element is missing\n if (!is.element(this.elements.poster)) {\n return Promise.reject();\n }\n\n // Load the image, and set poster if successful\n const loadPromise = loadImage(poster).then(() => {\n this.elements.poster.style.backgroundImage = `url('${poster}')`;\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n ui.togglePoster.call(this, true);\n return poster;\n });\n\n // Hide the element if the poster can't be loaded (otherwise it will just be a black element covering the video)\n loadPromise.catch(() => ui.togglePoster.call(this, false));\n\n // Return the promise so the caller can use it as well\n return loadPromise;\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set ARIA state\n toggleState(this.elements.buttons.play, this.playing);\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = [\n 'stalled',\n 'waiting',\n ].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(() => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n }, this.loading ? 250 : 0);\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls } = this.elements;\n\n if (controls && this.config.hideControls) {\n // Show controls if force, loading, paused, or button interaction, otherwise hide\n this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover));\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport browser from './utils/browser';\nimport { getElement, getElements, getFocusElement, matches, toggleClass, toggleHidden } from './utils/elements';\nimport { on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n this.player.currentTime = this.player.duration / 10 * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Which keycodes should we prevent default\n const preventDefault = [\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 56,\n 57,\n 32,\n 75,\n 38,\n 40,\n 77,\n 39,\n 37,\n 70,\n 67,\n 73,\n 76,\n 79,\n ];\n\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = getFocusElement();\n if (is.element(focused) && (\n focused !== this.player.elements.inputs.seek &&\n matches(focused, this.player.config.selectors.editable))\n ) {\n return;\n }\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n this.player.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n this.player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n this.player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n this.player.muted = !this.player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n this.player.forward();\n break;\n\n case 37:\n // Arrow back\n this.player.rewind();\n break;\n\n case 70:\n // F key\n this.player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n this.player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n this.player.loop = !this.player.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (!this.player.fullscreen.enabled && this.player.fullscreen.active && code === 27) {\n this.player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n this.player.touch = true;\n\n // Add touch class\n toggleClass(this.player.elements.container, this.player.config.classNames.isTouch, true);\n\n }\n\n // Global window & document listeners\n global(toggle = true) {\n // Keyboard shortcuts\n if (this.player.config.keyboard.global) {\n toggleListener.call(this.player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once(document.body, 'touchstart', this.firstTouch);\n }\n\n // Container listeners\n container() {\n // Keyboard shortcuts\n if (!this.player.config.keyboard.global && this.player.config.keyboard.focused) {\n on.call(this.player, this.player.elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Detect tab focus\n // Remove class on blur/focusout\n on.call(this.player, this.player.elements.container, 'focusout', event => {\n toggleClass(event.target, this.player.config.classNames.tabFocus, false);\n });\n // Add classname to tabbed elements\n on.call(this.player, this.player.elements.container, 'keydown', event => {\n if (event.keyCode !== 9) {\n return;\n }\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n setTimeout(() => {\n toggleClass(getFocusElement(), this.player.config.classNames.tabFocus, true);\n }, 0);\n });\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(this.player, this.player.elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', event => {\n const { controls } = this.player.elements;\n\n // Remove button states for fullscreen\n if (event.type === 'enterfullscreen') {\n controls.pressed = false;\n controls.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = [\n 'touchstart',\n 'touchmove',\n 'mousemove',\n ].includes(event.type);\n\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(this.player, true);\n // Use longer timeout for touch devices\n delay = this.player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(this.player.timers.controls);\n // Timer to prevent flicker when seeking\n this.player.timers.controls = setTimeout(() => ui.toggleControls.call(this.player, false), delay);\n });\n }\n\n // Listen for media events\n media() {\n // Time change on media\n on.call(this.player, this.player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(this.player, event));\n\n // Display duration\n on.call(this.player, this.player.media, 'durationchange loadeddata loadedmetadata', event => controls.durationUpdate.call(this.player, event));\n\n // Check for audio tracks on load\n // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n on.call(this.player, this.player.media, 'loadeddata', () => {\n toggleHidden(this.player.elements.volume, !this.player.hasAudio);\n toggleHidden(this.player.elements.buttons.mute, !this.player.hasAudio);\n });\n\n // Handle the media finishing\n on.call(this.player, this.player.media, 'ended', () => {\n // Show poster on end\n if (this.player.isHTML5 && this.player.isVideo && this.player.config.resetOnEnd) {\n // Restart\n this.player.restart();\n }\n });\n\n // Check for buffer progress\n on.call(this.player, this.player.media, 'progress playing seeking seeked', event => controls.updateProgress.call(this.player, event));\n\n // Handle volume changes\n on.call(this.player, this.player.media, 'volumechange', event => controls.updateVolume.call(this.player, event));\n\n // Handle play/pause\n on.call(this.player, this.player.media, 'playing play pause ended emptied timeupdate', event => ui.checkPlaying.call(this.player, event));\n\n // Loading state\n on.call(this.player, this.player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(this.player, event));\n\n // If autoplay, then load advertisement if required\n // TODO: Show some sort of loading state while the ad manager loads else there's a delay before ad shows\n on.call(this.player, this.player.media, 'playing', () => {\n if (!this.player.ads) {\n return;\n }\n\n // If ads are enabled, wait for them first\n if (this.player.ads.enabled && !this.player.ads.initialized) {\n // Wait for manager response\n this.player.ads.managerPromise.then(() => this.player.ads.play()).catch(() => this.player.play());\n }\n });\n\n // Click video\n if (this.player.supported.ui && this.player.config.clickToPlay && !this.player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(this.player, `.${this.player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause ore restart\n on.call(this.player, wrapper, 'click', () => {\n // Touch devices will just show controls (if we're hiding controls)\n if (this.player.config.hideControls && this.player.touch && !this.player.paused) {\n return;\n }\n\n if (this.player.paused) {\n this.player.play();\n } else if (this.player.ended) {\n this.player.restart();\n this.player.play();\n } else {\n this.player.pause();\n }\n });\n }\n\n // Disable right click\n if (this.player.supported.ui && this.player.config.disableContextMenu) {\n on.call(this.player,\n this.player.elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(this.player, this.player.media, 'volumechange', () => {\n // Save to storage\n this.player.storage.set({ volume: this.player.volume, muted: this.player.muted });\n });\n\n // Speed change\n on.call(this.player, this.player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'speed');\n\n // Save to storage\n this.player.storage.set({ speed: this.player.speed });\n });\n\n // Quality request\n on.call(this.player, this.player.media, 'qualityrequested', event => {\n // Save to storage\n this.player.storage.set({ quality: event.detail.quality });\n });\n\n // Quality change\n on.call(this.player, this.player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(this.player, 'quality', null, event.detail.quality);\n });\n\n // Caption language change\n on.call(this.player, this.player.media, 'languagechange', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'captions');\n\n // Save to storage\n this.player.storage.set({ language: this.player.language });\n });\n\n // Captions toggle\n on.call(this.player, this.player.media, 'captionsenabled captionsdisabled', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'captions');\n\n // Save to storage\n this.player.storage.set({ captions: this.player.captions.active });\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n on.call(this.player, this.player.media, this.player.config.events.concat([\n 'keyup',\n 'keydown',\n ]).join(' '), event => {\n let {detail = {}} = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = this.player.media.error;\n }\n\n triggerEvent.call(this.player, this.player.elements.container, event.type, true, detail);\n });\n }\n\n // Listen for control events\n controls() {\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Run default and custom handlers\n const proxy = (event, defaultHandler, customHandlerKey) => {\n const customHandler = this.player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(this.player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned && is.function(defaultHandler)) {\n defaultHandler.call(this.player, event);\n }\n };\n\n // Trigger custom and default handlers\n const bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const customHandler = this.player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(this.player, element, type, event => proxy(event, defaultHandler, customHandlerKey), passive && !hasCustomHandler);\n };\n\n // Play/pause toggle\n bind(this.player.elements.buttons.play, 'click', this.player.togglePlay, 'play');\n\n // Pause\n bind(this.player.elements.buttons.restart, 'click', this.player.restart, 'restart');\n\n // Rewind\n bind(this.player.elements.buttons.rewind, 'click', this.player.rewind, 'rewind');\n\n // Rewind\n bind(this.player.elements.buttons.fastForward, 'click', this.player.forward, 'fastForward');\n\n // Mute toggle\n bind(\n this.player.elements.buttons.mute,\n 'click',\n () => {\n this.player.muted = !this.player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n bind(this.player.elements.buttons.captions, 'click', this.player.toggleCaptions);\n\n // Fullscreen toggle\n bind(\n this.player.elements.buttons.fullscreen,\n 'click',\n () => {\n this.player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n bind(\n this.player.elements.buttons.pip,\n 'click',\n () => {\n this.player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n bind(this.player.elements.buttons.airplay, 'click', this.player.airplay, 'airplay');\n\n // Settings menu\n bind(this.player.elements.buttons.settings, 'click', event => {\n controls.toggleMenu.call(this.player, event);\n });\n\n // Settings menu\n bind(this.player.elements.settings.form, 'click', event => {\n event.stopPropagation();\n\n // Go back to home tab on click\n const showHomeTab = () => {\n const id = `plyr-settings-${this.player.id}-home`;\n controls.showTab.call(this.player, id);\n };\n\n // Settings menu items - use event delegation as items are added/removed\n if (matches(event.target, this.player.config.selectors.inputs.language)) {\n proxy(\n event,\n () => {\n this.player.currentTrack = Number(event.target.value);\n showHomeTab();\n },\n 'language',\n );\n } else if (matches(event.target, this.player.config.selectors.inputs.quality)) {\n proxy(\n event,\n () => {\n this.player.quality = event.target.value;\n showHomeTab();\n },\n 'quality',\n );\n } else if (matches(event.target, this.player.config.selectors.inputs.speed)) {\n proxy(\n event,\n () => {\n this.player.speed = parseFloat(event.target.value);\n showHomeTab();\n },\n 'speed',\n );\n } else {\n const tab = event.target;\n controls.showTab.call(this.player, tab.getAttribute('aria-controls'));\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n bind(this.player.elements.inputs.seek, 'mousedown mousemove', event => {\n const clientRect = this.player.elements.progress.getBoundingClientRect();\n const percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n bind(this.player.elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n\n const code = event.keyCode ? event.keyCode : event.which;\n const eventType = event.type;\n\n if ((eventType === 'keydown' || eventType === 'keyup') && (code !== 39 && code !== 37)) {\n return;\n }\n // Was playing before?\n const play = seek.hasAttribute('play-on-seeked');\n\n // Done seeking\n const done = [\n 'mouseup',\n 'touchend',\n 'keyup',\n ].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute('play-on-seeked');\n this.player.play();\n } else if (!done && this.player.playing) {\n seek.setAttribute('play-on-seeked', '');\n this.player.pause();\n }\n });\n\n // Seek\n bind(\n this.player.elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n this.player.currentTime = seekTo / seek.max * this.player.duration;\n },\n 'seek',\n );\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (this.player.config.toggleInvert && !is.element(this.player.elements.display.duration)) {\n bind(this.player.elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (this.player.currentTime === 0) {\n return;\n }\n\n this.player.config.invertTime = !this.player.config.invertTime;\n\n controls.timeUpdate.call(this.player);\n });\n }\n\n // Volume\n bind(\n this.player.elements.inputs.volume,\n inputEvent,\n event => {\n this.player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Polyfill for lower fill in <input type=\"range\"> for webkit\n if (browser.isWebkit) {\n bind(getElements.call(this.player, 'input[type=\"range\"]'), 'input', event => {\n controls.updateRangeFill.call(this.player, event.target);\n });\n }\n\n // Seek tooltip\n bind(this.player.elements.progress, 'mouseenter mouseleave mousemove', event => controls.updateSeekTooltip.call(this.player, event));\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n bind(this.player.elements.controls, 'mouseenter mouseleave', event => {\n this.player.elements.controls.hover = !this.player.touch && event.type === 'mouseenter';\n });\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n bind(this.player.elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n this.player.elements.controls.pressed = [\n 'mousedown',\n 'touchstart',\n ].includes(event.type);\n });\n\n // Focus in/out on controls\n bind(this.player.elements.controls, 'focusin focusout', event => {\n const { config, elements, timers } = this.player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, event.type === 'focusin');\n\n // Toggle\n ui.toggleControls.call(this.player, event.type === 'focusin');\n\n // If focusin, hide again after delay\n if (event.type === 'focusin') {\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for keyboard users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n // Hide\n timers.controls = setTimeout(() => ui.toggleControls.call(this.player, false), delay);\n }\n });\n\n // Mouse wheel for volume\n bind(\n this.player.elements.inputs.volume,\n 'wheel',\n event => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n const step = 1 / 50;\n let direction = 0;\n\n // Scroll down (or up on natural) to decrease\n if (event.deltaY < 0 || event.deltaX > 0) {\n if (inverted) {\n this.player.decreaseVolume(step);\n direction = -1;\n } else {\n this.player.increaseVolume(step);\n direction = 1;\n }\n }\n\n // Scroll up (or down on natural) to increase\n if (event.deltaY > 0 || event.deltaX < 0) {\n if (inverted) {\n this.player.increaseVolume(step);\n direction = 1;\n } else {\n this.player.decreaseVolume(step);\n direction = -1;\n }\n }\n\n // Don't break page scrolling at max and min\n if ((direction === 1 && this.player.media.volume < 1) || (direction === -1 && this.player.media.volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isCss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n isCss = true;\n\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // Note: The following code isolates IE using `hideFocus` and treats empty\n // stylesheets as failures to get around lack of onerror support\n if (isCss && 'hideFocus' in e) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText`\n result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n }\n\n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function)} [arg1] - The bundleId or success callback\n * @param {Function} [arg2] - The success or error callback\n * @param {Function} [arg3] - The error callback\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n // load scripts\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from './../captions';\nimport controls from './../controls';\nimport ui from './../ui';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadScript from './../utils/loadScript';\nimport { format, stripHTML } from './../utils/strings';\nimport { buildUrlParams } from './../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Get aspect ratio for dimensions\nfunction getAspectRatio(width, height) {\n const getRatio = (w, h) => (h === 0 ? w : getRatio(h, w % h));\n const ratio = getRatio(width, height);\n return `${width / ratio}:${height / ratio}`;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set intial ratio\n vimeo.setAspectRatio.call(this);\n\n // Load the API if not already\n if (!is.object(window.Vimeo)) {\n loadScript(this.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(this);\n })\n .catch(error => {\n this.debug.warn('Vimeo API failed to load', error);\n });\n } else {\n vimeo.ready.call(this);\n }\n },\n\n // Set aspect ratio\n // For Vimeo we have an extra 300% height <div> to hide the standard controls and UI\n setAspectRatio(input) {\n const ratio = is.string(input) ? input.split(':') : this.config.ratio.split(':');\n const padding = 100 / ratio[0] * ratio[1];\n this.elements.wrapper.style.paddingBottom = `${padding}%`;\n\n if (this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n\n // Get Vimeo params for the iframe\n const options = {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n // muted: player.muted,\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: 0,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n };\n const params = buildUrlParams(options);\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Inject the package\n const wrapper = createElement('div', { class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href);\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(error => {\n // Hide menu item (and menu if empty)\n if (error.name === 'Error') {\n controls.setSpeedMenu.call(player, []);\n }\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([\n player.embed.getVideoWidth(),\n player.embed.getVideoHeight(),\n ]).then(dimensions => {\n const ratio = getAspectRatio(dimensions[0], dimensions[1]);\n vimeo.setAspectRatio.call(this, ratio);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport controls from './../controls';\nimport ui from './../ui';\nimport { dedupe } from './../utils/arrays';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadImage from './../utils/loadImage';\nimport loadScript from './../utils/loadScript';\nimport { format, generateId } from './../utils/strings';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Standardise YouTube quality unit\nfunction mapQualityUnit(input) {\n const qualities = {\n hd2160: 2160,\n hd1440: 1440,\n hd1080: 1080,\n hd720: 720,\n large: 480,\n medium: 360,\n small: 240,\n tiny: 144,\n };\n\n const entry = Object.entries(qualities).find(entry => entry.includes(input));\n\n if (entry) {\n // Get the match corresponding to the input\n return entry.find(value => value !== input);\n }\n\n return 'default';\n}\n\nfunction mapQualityUnits(levels) {\n if (is.empty(levels)) {\n return levels;\n }\n\n return dedupe(levels.map(level => mapQualityUnit(level)));\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set aspect ratio\n youtube.setAspectRatio.call(this);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Load the API\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n\n // Setup callback for the API\n // YouTube has it's own system of course...\n window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];\n\n // Add to queue\n window.onYouTubeReadyCallbacks.push(() => {\n youtube.ready.call(this);\n });\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n window.onYouTubeReadyCallbacks.forEach(callback => {\n callback();\n });\n };\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n // Try via undocumented API method first\n // This method disappears now and then though...\n // https://github.com/sampotts/plyr/issues/709\n if (is.function(this.embed.getVideoData)) {\n const { title } = this.embed.getVideoData();\n\n if (is.empty(title)) {\n this.config.title = title;\n ui.setTitle.call(this);\n return;\n }\n }\n\n // Or via Google API\n const key = this.config.keys.google;\n if (is.string(key) && !is.empty(key)) {\n const url = format(this.config.urls.youtube.api, videoId, key);\n\n fetch(url)\n .then(result => {\n if (is.object(result)) {\n this.config.title = result.items[0].snippet.title;\n ui.setTitle.call(this);\n }\n })\n .catch(() => {});\n }\n },\n\n // Set aspect ratio\n setAspectRatio() {\n const ratio = this.config.ratio.split(':');\n this.elements.wrapper.style.paddingBottom = `${100 / ratio[0] * ratio[1]}%`;\n },\n\n // API ready\n ready() {\n const player = this;\n\n // Ignore already setup (race condition)\n const currentId = player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the <iframe> with a <div> due to YouTube API issues\n const videoId = parseId(source);\n const id = generateId(player.provider);\n const container = createElement('div', { id });\n player.media = replaceElement(container, player.media);\n\n // Set poster image\n const posterSrc = format => `https://img.youtube.com/vi/${videoId}/${format}default.jpg`;\n\n // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)\n loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded\n .catch(() => loadImage(posterSrc('sd'), 121)) // 480p padded 4:3\n .catch(() => loadImage(posterSrc('hq'))) // 360p padded 4:3. Always exists\n .then(image => ui.setPoster.call(player, image.src))\n .then(posterSrc => {\n // If the image is padded, use background-size \"cover\" instead (like youtube does too with their posters)\n if (!posterSrc.includes('maxres')) {\n player.elements.poster.style.backgroundSize = 'cover';\n }\n });\n\n // Setup instance\n // https://developers.google.com/youtube/iframe_api_reference\n player.embed = new window.YT.Player(id, {\n videoId,\n playerVars: {\n autoplay: player.config.autoplay ? 1 : 0, // Autoplay\n controls: player.supported.ui ? 0 : 1, // Only show controls if not fully supported\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n disablekb: 1, // Disable keyboard as we handle it\n playsinline: 1, // Allow iOS inline playback\n\n // Tracking for stats\n // origin: window ? `${window.location.protocol}//${window.location.host}` : null,\n widget_referrer: window ? window.location.href : null,\n\n // Captions are flaky on YouTube\n cc_load_policy: player.captions.active ? 1 : 0,\n cc_lang_pref: player.config.captions.language,\n },\n events: {\n onError(event) {\n // If we've already fired an error, don't do it again\n // YouTube fires onError twice\n if (is.object(player.media.error)) {\n return;\n }\n\n const detail = {\n code: event.data,\n };\n\n // Messages copied from https://developers.google.com/youtube/iframe_api_reference#onError\n switch (event.data) {\n case 2:\n detail.message =\n 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.';\n break;\n\n case 5:\n detail.message =\n 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';\n break;\n\n case 100:\n detail.message =\n 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.';\n break;\n\n case 101:\n case 150:\n detail.message = 'The owner of the requested video does not allow it to be played in embedded players.';\n break;\n\n default:\n detail.message = 'An unknown error occured';\n break;\n }\n\n player.media.error = detail;\n\n triggerEvent.call(player, player.media, 'error');\n },\n onPlaybackQualityChange() {\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: player.media.quality,\n });\n },\n onPlaybackRateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Get current speed\n player.media.playbackRate = instance.getPlaybackRate();\n\n triggerEvent.call(player, player.media, 'ratechange');\n },\n onReady(event) {\n // Get the instance\n const instance = event.target;\n\n // Get the title\n youtube.getTitle.call(player, videoId);\n\n // Create a faux HTML5 API using the YouTube API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n instance.playVideo();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n instance.pauseVideo();\n };\n\n player.media.stop = () => {\n instance.stopVideo();\n };\n\n player.media.duration = instance.getDuration();\n player.media.paused = true;\n\n // Seeking\n player.media.currentTime = 0;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return Number(instance.getCurrentTime());\n },\n set(time) {\n // If paused, mute audio preventively (YouTube starts playing on seek if the video hasn't been played yet).\n if (player.paused) {\n player.embed.mute();\n }\n\n // Set seeking state and trigger event\n player.media.seeking = true;\n triggerEvent.call(player, player.media, 'seeking');\n\n // Seek after events sent\n instance.seekTo(time);\n },\n });\n\n // Playback speed\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return instance.getPlaybackRate();\n },\n set(input) {\n instance.setPlaybackRate(input);\n },\n });\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n return mapQualityUnit(instance.getPlaybackQuality());\n },\n set(input) {\n instance.setPlaybackQuality(mapQualityUnit(input));\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n volume = input;\n instance.setVolume(volume * 100);\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : muted;\n muted = toggle;\n instance[toggle ? 'mute' : 'unMute']();\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Source\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return instance.getVideoUrl();\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Get available speeds\n player.options.speed = instance.getAvailablePlaybackRates();\n\n // Set the tabindex to avoid focus entering iframe\n if (player.supported.ui) {\n player.media.setAttribute('tabindex', -1);\n }\n\n triggerEvent.call(player, player.media, 'timeupdate');\n triggerEvent.call(player, player.media, 'durationchange');\n\n // Reset timer\n clearInterval(player.timers.buffering);\n\n // Setup buffering\n player.timers.buffering = setInterval(() => {\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n\n // Trigger progress only when we actually buffer something\n if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) {\n triggerEvent.call(player, player.media, 'progress');\n }\n\n // Set last buffer point\n player.media.lastBuffered = player.media.buffered;\n\n // Bail if we're at 100%\n if (player.media.buffered === 1) {\n clearInterval(player.timers.buffering);\n\n // Trigger event\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n }, 200);\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 50);\n },\n onStateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Reset timer\n clearInterval(player.timers.playing);\n\n const seeked = player.media.seeking && [\n 1,\n 2,\n ].includes(event.data);\n\n if (seeked) {\n // Unset seeking and fire seeked event\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n }\n\n // Handle events\n // -1 Unstarted\n // 0 Ended\n // 1 Playing\n // 2 Paused\n // 3 Buffering\n // 5 Video cued\n switch (event.data) {\n case -1:\n // Update scrubber\n triggerEvent.call(player, player.media, 'timeupdate');\n\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n triggerEvent.call(player, player.media, 'progress');\n\n break;\n\n case 0:\n assurePlaybackState.call(player, false);\n\n // YouTube doesn't support loop for a single video, so mimick it.\n if (player.media.loop) {\n // YouTube needs a call to `stopVideo` before playing again\n instance.stopVideo();\n instance.playVideo();\n } else {\n triggerEvent.call(player, player.media, 'ended');\n }\n\n break;\n\n case 1:\n // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)\n if (player.media.paused && !player.embed.hasPlayed) {\n player.media.pause();\n } else {\n assurePlaybackState.call(player, true);\n\n triggerEvent.call(player, player.media, 'playing');\n\n // Poll to get playback progress\n player.timers.playing = setInterval(() => {\n triggerEvent.call(player, player.media, 'timeupdate');\n }, 50);\n\n // Check duration again due to YouTube bug\n // https://github.com/sampotts/plyr/issues/374\n // https://code.google.com/p/gdata-issues/issues/detail?id=8690\n if (player.media.duration !== instance.getDuration()) {\n player.media.duration = instance.getDuration();\n triggerEvent.call(player, player.media, 'durationchange');\n }\n\n // Get quality\n controls.setQualityMenu.call(player, mapQualityUnits(instance.getAvailableQualityLevels()));\n }\n\n break;\n\n case 2:\n // Restore audio (YouTube starts playing on seek if the video hasn't been played yet)\n if (!player.muted) {\n player.embed.unMute();\n }\n assurePlaybackState.call(player, false);\n\n break;\n\n default:\n break;\n }\n\n triggerEvent.call(player, player.elements.container, 'statechange', false, {\n code: event.data,\n });\n },\n },\n });\n },\n};\n\nexport default youtube;\n","// ==========================================================================\n// Plyr Media\n// ==========================================================================\n\nimport html5 from './html5';\nimport vimeo from './plugins/vimeo';\nimport youtube from './plugins/youtube';\nimport { createElement, toggleClass, wrap } from './utils/elements';\n\nconst media = {\n // Setup media\n setup() {\n // If there's no media, bail\n if (!this.media) {\n this.debug.warn('No media element found!');\n return;\n }\n\n // Add type class\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', this.type), true);\n\n // Add provider class\n toggleClass(this.elements.container, this.config.classNames.provider.replace('{0}', this.provider), true);\n\n // Add video class for embeds\n // This will require changes if audio embeds are added\n if (this.isEmbed) {\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', 'video'), true);\n }\n\n // Inject the player wrapper\n if (this.isVideo) {\n // Create the wrapper div\n this.elements.wrapper = createElement('div', {\n class: this.config.classNames.video,\n });\n\n // Wrap the video in a container\n wrap(this.media, this.elements.wrapper);\n\n // Faux poster container\n this.elements.poster = createElement('div', {\n class: this.config.classNames.poster,\n });\n\n this.elements.wrapper.appendChild(this.elements.poster);\n }\n\n if (this.isEmbed) {\n switch (this.provider) {\n case 'youtube':\n youtube.setup.call(this);\n break;\n\n case 'vimeo':\n vimeo.setup.call(this);\n break;\n\n default:\n break;\n }\n } else if (this.isHTML5) {\n html5.extend.call(this);\n }\n },\n};\n\nexport default media;\n","// ==========================================================================\n// Advertisement plugin using Google IMA HTML5 SDK\n// Create an account with our ad partner, vi here:\n// https://www.vi.ai/publisher-video-monetization/\n// ==========================================================================\n\n/* global google */\n\nimport i18n from '../i18n';\nimport { createElement } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport is from './../utils/is';\nimport loadScript from './../utils/loadScript';\nimport { formatTime } from './../utils/time';\nimport { buildUrlParams } from './../utils/urls';\n\nclass Ads {\n /**\n * Ads constructor.\n * @param {object} player\n * @return {Ads}\n */\n constructor(player) {\n this.player = player;\n this.publisherId = player.config.ads.publisherId;\n this.playing = false;\n this.initialized = false;\n this.elements = {\n container: null,\n displayContainer: null,\n };\n this.manager = null;\n this.loader = null;\n this.cuePoints = null;\n this.events = {};\n this.safetyTimer = null;\n this.countdownTimer = null;\n\n // Setup a promise to resolve when the IMA manager is ready\n this.managerPromise = new Promise((resolve, reject) => {\n // The ad is loaded and ready\n this.on('loaded', resolve);\n\n // Ads failed\n this.on('error', reject);\n });\n\n this.load();\n }\n\n get enabled() {\n return this.player.isVideo && this.player.config.ads.enabled && !is.empty(this.publisherId);\n }\n\n /**\n * Load the IMA SDK\n */\n load() {\n if (this.enabled) {\n // Check if the Google IMA3 SDK is loaded or load it ourselves\n if (!is.object(window.google) || !is.object(window.google.ima)) {\n loadScript(this.player.config.urls.googleIMA.sdk)\n .then(() => {\n this.ready();\n })\n .catch(() => {\n // Script failed to load or is blocked\n this.trigger('error', new Error('Google IMA SDK failed to load'));\n });\n } else {\n this.ready();\n }\n }\n }\n\n /**\n * Get the ads instance ready\n */\n ready() {\n // Start ticking our safety timer. If the whole advertisement\n // thing doesn't resolve within our set time; we bail\n this.startSafetyTimer(12000, 'ready()');\n\n // Clear the safety timer\n this.managerPromise.then(() => {\n this.clearSafetyTimer('onAdsManagerLoaded()');\n });\n\n // Set listeners on the Plyr instance\n this.listeners();\n\n // Setup the IMA SDK\n this.setupIMA();\n }\n\n // Build the default tag URL\n get tagUrl() {\n const params = {\n AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n AV_CHANNELID: '5a0458dc28a06145e4519d21',\n AV_URL: location.hostname,\n cb: Date.now(),\n AV_WIDTH: 640,\n AV_HEIGHT: 480,\n AV_CDIM2: this.publisherId,\n };\n\n const base = 'https://go.aniview.com/api/adserver6/vast/';\n\n return `${base}?${buildUrlParams(params)}`;\n }\n\n /**\n * In order for the SDK to display ads for our video, we need to tell it where to put them,\n * so here we define our ad container. This div is set up to render on top of the video player.\n * Using the code below, we tell the SDK to render ads within that div. We also provide a\n * handle to the content video player - the SDK will poll the current time of our player to\n * properly place mid-rolls. After we create the ad display container, we initialize it. On\n * mobile devices, this initialization is done as the result of a user action.\n */\n setupIMA() {\n // Create the container for our advertisements\n this.elements.container = createElement('div', {\n class: this.player.config.classNames.ads,\n });\n this.player.elements.container.appendChild(this.elements.container);\n\n // So we can run VPAID2\n google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED);\n\n // Set language\n google.ima.settings.setLocale(this.player.config.ads.language);\n\n // We assume the adContainer is the video container of the plyr element\n // that will house the ads\n this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container);\n\n // Request video ads to be pre-loaded\n this.requestAds();\n }\n\n /**\n * Request advertisements\n */\n requestAds() {\n const { container } = this.player.elements;\n\n try {\n // Create ads loader\n this.loader = new google.ima.AdsLoader(this.elements.displayContainer);\n\n // Listen and respond to ads loaded and error events\n this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, event => this.onAdsManagerLoaded(event), false);\n this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);\n\n // Request video ads\n const request = new google.ima.AdsRequest();\n request.adTagUrl = this.tagUrl;\n\n // Specify the linear and nonlinear slot sizes. This helps the SDK\n // to select the correct creative if multiple are returned\n request.linearAdSlotWidth = container.offsetWidth;\n request.linearAdSlotHeight = container.offsetHeight;\n request.nonLinearAdSlotWidth = container.offsetWidth;\n request.nonLinearAdSlotHeight = container.offsetHeight;\n\n // We only overlay ads as we only support video.\n request.forceNonLinearFullSlot = false;\n\n // Mute based on current state\n request.setAdWillPlayMuted(!this.player.muted);\n\n this.loader.requestAds(request);\n } catch (e) {\n this.onAdError(e);\n }\n }\n\n /**\n * Update the ad countdown\n * @param {boolean} start\n */\n pollCountdown(start = false) {\n if (!start) {\n clearInterval(this.countdownTimer);\n this.elements.container.removeAttribute('data-badge-text');\n return;\n }\n\n const update = () => {\n const time = formatTime(Math.max(this.manager.getRemainingTime(), 0));\n const label = `${i18n.get('advertisement', this.player.config)} - ${time}`;\n this.elements.container.setAttribute('data-badge-text', label);\n };\n\n this.countdownTimer = setInterval(update, 100);\n }\n\n /**\n * This method is called whenever the ads are ready inside the AdDisplayContainer\n * @param {Event} adsManagerLoadedEvent\n */\n onAdsManagerLoaded(event) {\n // Get the ads manager\n const settings = new google.ima.AdsRenderingSettings();\n\n // Tell the SDK to save and restore content video state on our behalf\n settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n settings.enablePreloading = true;\n\n // The SDK is polling currentTime on the contentPlayback. And needs a duration\n // so it can determine when to start the mid- and post-roll\n this.manager = event.getAdsManager(this.player, settings);\n\n // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n this.cuePoints = this.manager.getCuePoints();\n\n // Add advertisement cue's within the time line if available\n if (!is.empty(this.cuePoints)) {\n this.cuePoints.forEach(cuePoint => {\n if (cuePoint !== 0 && cuePoint !== -1 && cuePoint < this.player.duration) {\n const seekElement = this.player.elements.progress;\n\n if (is.element(seekElement)) {\n const cuePercentage = 100 / this.player.duration * cuePoint;\n const cue = createElement('span', {\n class: this.player.config.classNames.cues,\n });\n\n cue.style.left = `${cuePercentage.toString()}%`;\n seekElement.appendChild(cue);\n }\n }\n });\n }\n\n // Get skippable state\n // TODO: Skip button\n // this.player.debug.warn(this.manager.getAdSkippableState());\n\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n // Add listeners to the required events\n // Advertisement error events\n this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error));\n\n // Advertisement regular events\n Object.keys(google.ima.AdEvent.Type).forEach(type => {\n this.manager.addEventListener(google.ima.AdEvent.Type[type], event => this.onAdEvent(event));\n });\n\n // Resolve our adsManager\n this.trigger('loaded');\n }\n\n /**\n * This is where all the event handling takes place. Retrieve the ad from the event. Some\n * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n * @param {Event} event\n */\n onAdEvent(event) {\n const { container } = this.player.elements;\n\n // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n // don't have ad object associated\n const ad = event.getAd();\n\n // Proxy event\n const dispatchEvent = type => {\n const event = `ads${type.replace(/_/g, '').toLowerCase()}`;\n triggerEvent.call(this.player, this.player.media, event);\n };\n\n switch (event.type) {\n case google.ima.AdEvent.Type.LOADED:\n // This is the first event sent for an ad - it is possible to determine whether the\n // ad is a video ad or an overlay\n this.trigger('loaded');\n\n // Bubble event\n dispatchEvent(event.type);\n\n // Start countdown\n this.pollCountdown(true);\n\n if (!ad.isLinear()) {\n // Position AdDisplayContainer correctly for overlay\n ad.width = container.offsetWidth;\n ad.height = container.offsetHeight;\n }\n\n // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n break;\n\n case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n // All ads for the current videos are done. We can now request new advertisements\n // in case the video is re-played\n\n // Fire event\n dispatchEvent(event.type);\n\n // TODO: Example for what happens when a next video in a playlist would be loaded.\n // So here we load a new video when all ads are done.\n // Then we load new ads within a new adsManager. When the video\n // Is started - after - the ads are loaded, then we get ads.\n // You can also easily test cancelling and reloading by running\n // player.ads.cancel() and player.ads.play from the console I guess.\n // this.player.source = {\n // type: 'video',\n // title: 'View From A Blue Moon',\n // sources: [{\n // src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n // 'video/mp4', }], poster:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n // };\n\n // TODO: So there is still this thing where a video should only be allowed to start\n // playing when the IMA SDK is ready or has failed\n\n this.loadAds();\n break;\n\n case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n // This event indicates the ad has started - the video player can adjust the UI,\n // for example display a pause button and remaining time. Fired when content should\n // be paused. This usually happens right before an ad is about to cover the content\n\n dispatchEvent(event.type);\n\n this.pauseContent();\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n // This event indicates the ad has finished - the video player can perform\n // appropriate UI actions, such as removing the timer for remaining time detection.\n // Fired when content should be resumed. This usually happens when an ad finishes\n // or collapses\n\n dispatchEvent(event.type);\n\n this.pollCountdown();\n\n this.resumeContent();\n\n break;\n\n case google.ima.AdEvent.Type.STARTED:\n case google.ima.AdEvent.Type.MIDPOINT:\n case google.ima.AdEvent.Type.COMPLETE:\n case google.ima.AdEvent.Type.IMPRESSION:\n case google.ima.AdEvent.Type.CLICK:\n dispatchEvent(event.type);\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Any ad error handling comes through here\n * @param {Event} event\n */\n onAdError(event) {\n this.cancel();\n this.player.debug.warn('Ads error', event);\n }\n\n /**\n * Setup hooks for Plyr and window events. This ensures\n * the mid- and post-roll launch at the correct time. And\n * resize the advertisement when the player resizes\n */\n listeners() {\n const { container } = this.player.elements;\n let time;\n\n // Add listeners to the required events\n this.player.on('ended', () => {\n this.loader.contentComplete();\n });\n\n this.player.on('seeking', () => {\n time = this.player.currentTime;\n return time;\n });\n\n this.player.on('seeked', () => {\n const seekedTime = this.player.currentTime;\n\n if (is.empty(this.cuePoints)) {\n return;\n }\n\n this.cuePoints.forEach((cuePoint, index) => {\n if (time < cuePoint && cuePoint < seekedTime) {\n this.manager.discardAdBreak();\n this.cuePoints.splice(index, 1);\n }\n });\n });\n\n // Listen to the resizing of the window. And resize ad accordingly\n // TODO: eventually implement ResizeObserver\n window.addEventListener('resize', () => {\n if (this.manager) {\n this.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n }\n });\n }\n\n /**\n * Initialize the adsManager and start playing advertisements\n */\n play() {\n const { container } = this.player.elements;\n\n if (!this.managerPromise) {\n this.resumeContent();\n }\n\n // Play the requested advertisement whenever the adsManager is ready\n this.managerPromise\n .then(() => {\n // Initialize the container. Must be done via a user action on mobile devices\n this.elements.displayContainer.initialize();\n\n try {\n if (!this.initialized) {\n // Initialize the ads manager. Ad rules playlist will start at this time\n this.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules\n this.manager.start();\n }\n\n this.initialized = true;\n } catch (adError) {\n // An error may be thrown if there was a problem with the\n // VAST response\n this.onAdError(adError);\n }\n })\n .catch(() => {});\n }\n\n /**\n * Resume our video\n */\n resumeContent() {\n // Hide the advertisement container\n this.elements.container.style.zIndex = '';\n\n // Ad is stopped\n this.playing = false;\n\n // Play our video\n if (this.player.currentTime < this.player.duration) {\n this.player.play();\n }\n }\n\n /**\n * Pause our video\n */\n pauseContent() {\n // Show the advertisement container\n this.elements.container.style.zIndex = 3;\n\n // Ad is playing.\n this.playing = true;\n\n // Pause our video.\n this.player.pause();\n }\n\n /**\n * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n * allowed to call new ads based on google policies, as they interpret this as an accidental\n * video requests. https://developers.google.com/interactive-\n * media-ads/docs/sdks/android/faq#8\n */\n cancel() {\n // Pause our video\n if (this.initialized) {\n this.resumeContent();\n }\n\n // Tell our instance that we're done for now\n this.trigger('error');\n\n // Re-create our adsManager\n this.loadAds();\n }\n\n /**\n * Re-create our adsManager\n */\n loadAds() {\n // Tell our adsManager to go bye bye\n this.managerPromise\n .then(() => {\n // Destroy our adsManager\n if (this.manager) {\n this.manager.destroy();\n }\n\n // Re-set our adsManager promises\n this.managerPromise = new Promise(resolve => {\n this.on('loaded', resolve);\n this.player.debug.log(this.manager);\n });\n\n // Now request some new advertisements\n this.requestAds();\n })\n .catch(() => {});\n }\n\n /**\n * Handles callbacks after an ad event was invoked\n * @param {string} event - Event type\n */\n trigger(event, ...args) {\n const handlers = this.events[event];\n\n if (is.array(handlers)) {\n handlers.forEach(handler => {\n if (is.function(handler)) {\n handler.apply(this, args);\n }\n });\n }\n }\n\n /**\n * Add event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n * @return {Ads}\n */\n on(event, callback) {\n if (!is.array(this.events[event])) {\n this.events[event] = [];\n }\n\n this.events[event].push(callback);\n\n return this;\n }\n\n /**\n * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n * The advertisement has 12 seconds to get its things together. We stop this timer when the\n * advertisement is playing, or when a user action is required to start, then we clear the\n * timer on ad ready\n * @param {number} time\n * @param {string} from\n */\n startSafetyTimer(time, from) {\n this.player.debug.log(`Safety timer invoked from: ${from}`);\n\n this.safetyTimer = setTimeout(() => {\n this.cancel();\n this.clearSafetyTimer('startSafetyTimer()');\n }, time);\n }\n\n /**\n * Clear our safety timer(s)\n * @param {string} from\n */\n clearSafetyTimer(from) {\n if (!is.nullOrUndefined(this.safetyTimer)) {\n this.player.debug.log(`Safety timer cleared from: ${from}`);\n\n clearTimeout(this.safetyTimer);\n this.safetyTimer = null;\n }\n }\n}\n\nexport default Ads;\n","// ==========================================================================\n// Plyr source update\n// ==========================================================================\n\nimport { providers } from './config/types';\nimport html5 from './html5';\nimport media from './media';\nimport support from './support';\nimport ui from './ui';\nimport { createElement, insertElement, removeElement } from './utils/elements';\nimport is from './utils/is';\n\nconst source = {\n // Add elements to HTML5 media (source, tracks, etc)\n insertElements(type, attributes) {\n if (is.string(attributes)) {\n insertElement(type, this.media, {\n src: attributes,\n });\n } else if (is.array(attributes)) {\n attributes.forEach(attribute => {\n insertElement(type, this.media, attribute);\n });\n }\n },\n\n // Update source\n // Sources are not checked for support so be careful\n change(input) {\n if (!is.object(input) || !('sources' in input) || !input.sources.length) {\n this.debug.warn('Invalid source format');\n return;\n }\n\n // Cancel current network requests\n html5.cancelRequests.call(this);\n\n // Destroy instance and re-setup\n this.destroy.call(\n this,\n () => {\n // Reset quality options\n this.options.quality = [];\n\n // Remove elements\n removeElement(this.media);\n this.media = null;\n\n // Reset class name\n if (is.element(this.elements.container)) {\n this.elements.container.removeAttribute('class');\n }\n\n // Set the type and provider\n this.type = input.type;\n this.provider = !is.empty(input.sources[0].provider) ? input.sources[0].provider : providers.html5;\n\n // Check for support\n this.supported = support.check(this.type, this.provider, this.config.playsinline);\n\n // Create new markup\n switch (`${this.provider}:${this.type}`) {\n case 'html5:video':\n this.media = createElement('video');\n break;\n\n case 'html5:audio':\n this.media = createElement('audio');\n break;\n\n case 'youtube:video':\n case 'vimeo:video':\n this.media = createElement('div', {\n src: input.sources[0].src,\n });\n break;\n\n default:\n break;\n }\n\n // Inject the new element\n this.elements.container.appendChild(this.media);\n\n // Autoplay the new source?\n if (is.boolean(input.autoplay)) {\n this.config.autoplay = input.autoplay;\n }\n\n // Set attributes for audio and video\n if (this.isHTML5) {\n if (this.config.crossorigin) {\n this.media.setAttribute('crossorigin', '');\n }\n if (this.config.autoplay) {\n this.media.setAttribute('autoplay', '');\n }\n if (!is.empty(input.poster)) {\n this.poster = input.poster;\n }\n if (this.config.loop.active) {\n this.media.setAttribute('loop', '');\n }\n if (this.config.muted) {\n this.media.setAttribute('muted', '');\n }\n if (this.config.playsinline) {\n this.media.setAttribute('playsinline', '');\n }\n }\n\n // Restore class hook\n ui.addStyleHook.call(this);\n\n // Set new sources for html5\n if (this.isHTML5) {\n source.insertElements.call(this, 'source', input.sources);\n }\n\n // Set video title\n this.config.title = input.title;\n\n // Set up from scratch\n media.setup.call(this);\n\n // HTML5 stuff\n if (this.isHTML5) {\n // Setup captions\n if ('tracks' in input) {\n source.insertElements.call(this, 'track', input.tracks);\n }\n\n // Load HTML5 sources\n this.media.load();\n }\n\n // If HTML5 or embed but not fully supported, setupInterface and call ready now\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n // Setup interface\n ui.build.call(this);\n }\n\n // Update the fullscreen support\n this.fullscreen.update();\n },\n true,\n );\n },\n};\n\nexport default source;\n","// ==========================================================================\n// Plyr\n// plyr.js v3.3.12\n// https://github.com/sampotts/plyr\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport captions from './captions';\nimport defaults from './config/defaults';\nimport { getProviderByUrl, providers, types } from './config/types';\nimport Console from './console';\nimport controls from './controls';\nimport Fullscreen from './fullscreen';\nimport Listeners from './listeners';\nimport media from './media';\nimport Ads from './plugins/ads';\nimport source from './source';\nimport Storage from './storage';\nimport support from './support';\nimport ui from './ui';\nimport { closest } from './utils/arrays';\nimport { createElement, hasClass, removeElement, replaceElement, toggleClass, toggleState, wrap } from './utils/elements';\nimport { off, on, once, triggerEvent, unbindListeners } from './utils/events';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { cloneDeep, extend } from './utils/objects';\nimport { parseUrl } from './utils/urls';\n\n// Private properties\n// TODO: Use a WeakMap for private globals\n// const globals = new WeakMap();\n\n// Plyr instance\nclass Plyr {\n constructor(target, options) {\n this.timers = {};\n\n // State\n this.ready = false;\n this.loading = false;\n this.failed = false;\n\n // Touch device\n this.touch = support.touch;\n\n // Set the media element\n this.media = target;\n\n // String selector passed\n if (is.string(this.media)) {\n this.media = document.querySelectorAll(this.media);\n }\n\n // jQuery, NodeList or Array passed, use first element\n if ((window.jQuery && this.media instanceof jQuery) || is.nodeList(this.media) || is.array(this.media)) {\n // eslint-disable-next-line\n this.media = this.media[0];\n }\n\n // Set config\n this.config = extend(\n {},\n defaults,\n Plyr.defaults,\n options || {},\n (() => {\n try {\n return JSON.parse(this.media.getAttribute('data-plyr-config'));\n } catch (e) {\n return {};\n }\n })(),\n );\n\n // Elements cache\n this.elements = {\n container: null,\n buttons: {},\n display: {},\n progress: {},\n inputs: {},\n settings: {\n menu: null,\n panes: {},\n tabs: {},\n },\n captions: null,\n };\n\n // Captions\n this.captions = {\n active: null,\n currentTrack: -1,\n meta: new WeakMap(),\n };\n\n // Fullscreen\n this.fullscreen = {\n active: false,\n };\n\n // Options\n this.options = {\n speed: [],\n quality: [],\n };\n\n // Debugging\n // TODO: move to globals\n this.debug = new Console(this.config.debug);\n\n // Log config options and support\n this.debug.log('Config', this.config);\n this.debug.log('Support', support);\n\n // We need an element to setup\n if (is.nullOrUndefined(this.media) || !is.element(this.media)) {\n this.debug.error('Setup failed: no suitable element passed');\n return;\n }\n\n // Bail if the element is initialized\n if (this.media.plyr) {\n this.debug.warn('Target already setup');\n return;\n }\n\n // Bail if not enabled\n if (!this.config.enabled) {\n this.debug.error('Setup failed: disabled by config');\n return;\n }\n\n // Bail if disabled or no basic support\n // You may want to disable certain UAs etc\n if (!support.check().api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n // Cache original element state for .destroy()\n const clone = this.media.cloneNode(true);\n clone.autoplay = false;\n this.elements.original = clone;\n\n // Set media type based on tag or data attribute\n // Supported: video, audio, vimeo, youtube\n const type = this.media.tagName.toLowerCase();\n\n // Embed properties\n let iframe = null;\n let url = null;\n\n // Different setup based on type\n switch (type) {\n case 'div':\n // Find the frame\n iframe = this.media.querySelector('iframe');\n\n // <iframe> type\n if (is.element(iframe)) {\n // Detect provider\n url = parseUrl(iframe.getAttribute('src'));\n this.provider = getProviderByUrl(url.toString());\n\n // Rework elements\n this.elements.container = this.media;\n this.media = iframe;\n\n // Reset classname\n this.elements.container.className = '';\n\n // Get attributes from URL and set config\n if (url.searchParams.length) {\n const truthy = [\n '1',\n 'true',\n ];\n\n if (truthy.includes(url.searchParams.get('autoplay'))) {\n this.config.autoplay = true;\n }\n if (truthy.includes(url.searchParams.get('loop'))) {\n this.config.loop.active = true;\n }\n\n // TODO: replace fullscreen.iosNative with this playsinline config option\n // YouTube requires the playsinline in the URL\n if (this.isYouTube) {\n this.config.playsinline = truthy.includes(url.searchParams.get('playsinline'));\n } else {\n this.config.playsinline = true;\n }\n }\n } else {\n // <div> 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')) {\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');\n wrap(this.media, this.elements.container);\n }\n\n // Allow focus to be captured\n this.elements.container.setAttribute('tabindex', 0);\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 this.ads = new Ads(this);\n\n // Autoplay if required\n if (this.config.autoplay) {\n this.play();\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 get isEmbed() {\n return Boolean(this.isYouTube || this.isVimeo);\n }\n get isYouTube() {\n return Boolean(this.provider === providers.youtube);\n }\n get isVimeo() {\n return Boolean(this.provider === providers.vimeo);\n }\n get isVideo() {\n return Boolean(this.type === types.video);\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 before the media has loaded\n const duration = (this.media || {}).duration || 0;\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 : 1);\n }\n\n /**\n * Decrease volume\n * @param {boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume - (is.number(step) ? step : 1);\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 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\n // Trigger request event\n triggerEvent.call(this, this.media, 'qualityrequested', false, { quality });\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\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 * 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);\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 // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n // If the method is called without parameter, toggle based on current value\n const active = is.boolean(input) ? input : !this.elements.container.classList.contains(this.config.classNames.captions.active);\n\n // Toggle state\n toggleState(this.elements.buttons.captions, active);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.captions.active, active);\n\n // Update state and trigger event\n if (active !== this.captions.active) {\n this.captions.active = active;\n triggerEvent.call(this, this.media, this.captions.active ? 'captionsenabled' : 'captionsdisabled');\n }\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);\n }\n\n /**\n * Get the current caption track index (-1 if disabled)\n */\n get currentTrack() {\n const { active, currentTrack } = this.captions;\n return active ? 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);\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 const states = {\n pip: 'picture-in-picture',\n inline: 'inline',\n };\n\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 === states.inline;\n\n // Toggle based on current state\n this.media.webkitSetPresentationMode(toggle ? states.pip : states.inline);\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 return this.media.webkitPresentationMode;\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 // Trigger event on change\n if (hiding !== isHidden) {\n const eventName = hiding ? 'controlshidden' : 'controlsshown';\n triggerEvent.call(this, this.media, eventName);\n }\n return !hiding;\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 * 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(this.elements.container, event, callback);\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 // Type specific stuff\n switch (`${this.provider}:${this.type}`) {\n case 'html5:video':\n case 'html5:audio':\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\n break;\n\n case 'youtube:video':\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\n break;\n\n case 'vimeo:video':\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 break;\n\n default:\n break;\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","// ==========================================================================\n// Plyr Polyfilled Build\n// plyr.js v3.3.12\n// https://github.com/sampotts/plyr\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport 'babel-polyfill';\nimport 'custom-event-polyfill';\nimport 'url-polyfill';\nimport Plyr from './plyr';\n\nexport default Plyr;\n"]} \ No newline at end of file
+{"version":3,"sources":["../../node_modules/core-js/modules/_global.js","../../node_modules/core-js/modules/_core.js","../../node_modules/core-js/modules/_is-object.js","../../node_modules/core-js/modules/_an-object.js","../../node_modules/core-js/modules/_fails.js","../../node_modules/core-js/modules/_descriptors.js","../../node_modules/core-js/modules/_dom-create.js","../../node_modules/core-js/modules/_ie8-dom-define.js","../../node_modules/core-js/modules/_to-primitive.js","../../node_modules/core-js/modules/_object-dp.js","../../node_modules/core-js/modules/_property-desc.js","../../node_modules/core-js/modules/_hide.js","../../node_modules/core-js/modules/_has.js","../../node_modules/core-js/modules/_uid.js","../../node_modules/core-js/modules/_redefine.js","../../node_modules/core-js/modules/_a-function.js","../../node_modules/core-js/modules/_ctx.js","../../node_modules/core-js/modules/_export.js","../../node_modules/core-js/modules/_typed.js","../../node_modules/core-js/modules/_library.js","../../node_modules/core-js/modules/_redefine-all.js","../../node_modules/core-js/modules/_an-instance.js","../../node_modules/core-js/modules/_to-integer.js","../../node_modules/core-js/modules/_to-length.js","../../node_modules/core-js/modules/_to-index.js","../../node_modules/core-js/modules/_cof.js","../../node_modules/core-js/modules/_iobject.js","../../node_modules/core-js/modules/_defined.js","../../node_modules/core-js/modules/_to-iobject.js","../../node_modules/core-js/modules/_to-absolute-index.js","../../node_modules/core-js/modules/_array-includes.js","../../node_modules/core-js/modules/_shared.js","../../node_modules/core-js/modules/_shared-key.js","../../node_modules/core-js/modules/_object-keys-internal.js","../../node_modules/core-js/modules/_enum-bug-keys.js","../../node_modules/core-js/modules/_object-gopn.js","../../node_modules/core-js/modules/_to-object.js","../../node_modules/core-js/modules/_array-fill.js","../../node_modules/core-js/modules/_wks.js","../../node_modules/core-js/modules/_set-to-string-tag.js","../../node_modules/core-js/modules/_typed-buffer.js","../../node_modules/core-js/modules/_species-constructor.js","../../node_modules/core-js/modules/_set-species.js","../../node_modules/core-js/modules/es6.typed.array-buffer.js","../../node_modules/core-js/modules/_classof.js","../../node_modules/core-js/modules/_iterators.js","../../node_modules/core-js/modules/_is-array-iter.js","../../node_modules/core-js/modules/_object-keys.js","../../node_modules/core-js/modules/_object-dps.js","../../node_modules/core-js/modules/_html.js","../../node_modules/core-js/modules/_object-create.js","../../node_modules/core-js/modules/_object-gpo.js","../../node_modules/core-js/modules/core.get-iterator-method.js","../../node_modules/core-js/modules/_is-array.js","../../node_modules/core-js/modules/_array-species-constructor.js","../../node_modules/core-js/modules/_array-species-create.js","../../node_modules/core-js/modules/_array-methods.js","../../node_modules/core-js/modules/_add-to-unscopables.js","../../node_modules/core-js/modules/_iter-step.js","../../node_modules/core-js/modules/_iter-create.js","../../node_modules/core-js/modules/_iter-define.js","../../node_modules/core-js/modules/es6.array.iterator.js","../../node_modules/core-js/modules/_iter-detect.js","../../node_modules/core-js/modules/_array-copy-within.js","../../node_modules/core-js/modules/_object-pie.js","../../node_modules/core-js/modules/_object-gopd.js","../../node_modules/core-js/modules/_typed-array.js","../../node_modules/core-js/modules/es6.typed.int8-array.js","../../node_modules/core-js/modules/es6.typed.uint8-array.js","../../node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","../../node_modules/core-js/modules/es6.typed.int16-array.js","../../node_modules/core-js/modules/es6.typed.uint16-array.js","../../node_modules/core-js/modules/es6.typed.int32-array.js","../../node_modules/core-js/modules/es6.typed.uint32-array.js","../../node_modules/core-js/modules/es6.typed.float32-array.js","../../node_modules/core-js/modules/es6.typed.float64-array.js","../../node_modules/core-js/modules/_iter-call.js","../../node_modules/core-js/modules/_for-of.js","../../node_modules/core-js/modules/_meta.js","../../node_modules/core-js/modules/_validate-collection.js","../../node_modules/core-js/modules/_collection-strong.js","../../node_modules/core-js/modules/_set-proto.js","../../node_modules/core-js/modules/_inherit-if-required.js","../../node_modules/core-js/modules/_collection.js","../../node_modules/core-js/modules/es6.map.js","../../node_modules/core-js/modules/es6.set.js","../../node_modules/core-js/modules/_object-gops.js","../../node_modules/core-js/modules/_object-assign.js","../../node_modules/core-js/modules/_collection-weak.js","../../node_modules/core-js/modules/es6.weak-map.js","../../node_modules/core-js/modules/es6.weak-set.js","../../node_modules/core-js/modules/es6.reflect.apply.js","../../node_modules/core-js/modules/_invoke.js","../../node_modules/core-js/modules/_bind.js","../../node_modules/core-js/modules/es6.reflect.construct.js","../../node_modules/core-js/modules/es6.reflect.define-property.js","../../node_modules/core-js/modules/es6.reflect.delete-property.js","../../node_modules/core-js/modules/es6.reflect.get.js","../../node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","../../node_modules/core-js/modules/es6.reflect.get-prototype-of.js","../../node_modules/core-js/modules/es6.reflect.has.js","../../node_modules/core-js/modules/es6.reflect.is-extensible.js","../../node_modules/core-js/modules/_own-keys.js","../../node_modules/core-js/modules/es6.reflect.own-keys.js","../../node_modules/core-js/modules/es6.reflect.prevent-extensions.js","../../node_modules/core-js/modules/es6.reflect.set.js","../../node_modules/core-js/modules/es6.reflect.set-prototype-of.js","../../node_modules/core-js/modules/_task.js","../../node_modules/core-js/modules/_microtask.js","../../node_modules/core-js/modules/_new-promise-capability.js","../../node_modules/core-js/modules/_perform.js","../../node_modules/core-js/modules/_promise-resolve.js","../../node_modules/core-js/modules/es6.promise.js","../../node_modules/core-js/modules/_wks-ext.js","../../node_modules/core-js/modules/_wks-define.js","../../node_modules/core-js/modules/_enum-keys.js","../../node_modules/core-js/modules/_object-gopn-ext.js","../../node_modules/core-js/modules/es6.symbol.js","../../node_modules/core-js/modules/_object-sap.js","../../node_modules/core-js/modules/es6.object.freeze.js","../../node_modules/core-js/modules/es6.object.seal.js","../../node_modules/core-js/modules/es6.object.prevent-extensions.js","../../node_modules/core-js/modules/es6.object.is-frozen.js","../../node_modules/core-js/modules/es6.object.is-sealed.js","../../node_modules/core-js/modules/es6.object.is-extensible.js","../../node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","../../node_modules/core-js/modules/es6.object.get-prototype-of.js","../../node_modules/core-js/modules/es6.object.keys.js","../../node_modules/core-js/modules/es6.object.get-own-property-names.js","../../node_modules/core-js/modules/es6.object.assign.js","../../node_modules/core-js/modules/_same-value.js","../../node_modules/core-js/modules/es6.object.is.js","../../node_modules/core-js/modules/es6.function.name.js","../../node_modules/core-js/modules/es6.string.raw.js","../../node_modules/core-js/modules/es6.string.from-code-point.js","../../node_modules/core-js/modules/_string-at.js","../../node_modules/core-js/modules/es6.string.code-point-at.js","../../node_modules/core-js/modules/_string-repeat.js","../../node_modules/core-js/modules/es6.string.repeat.js","../../node_modules/core-js/modules/_is-regexp.js","../../node_modules/core-js/modules/_string-context.js","../../node_modules/core-js/modules/_fails-is-regexp.js","../../node_modules/core-js/modules/es6.string.starts-with.js","../../node_modules/core-js/modules/es6.string.ends-with.js","../../node_modules/core-js/modules/es6.string.includes.js","../../node_modules/core-js/modules/_flags.js","../../node_modules/core-js/modules/es6.regexp.flags.js","../../node_modules/core-js/modules/_fix-re-wks.js","../../node_modules/core-js/modules/es6.regexp.match.js","../../node_modules/core-js/modules/es6.regexp.replace.js","../../node_modules/core-js/modules/es6.regexp.split.js","../../node_modules/core-js/modules/es6.regexp.search.js","../../node_modules/core-js/modules/_create-property.js","../../node_modules/core-js/modules/es6.array.from.js","../../node_modules/core-js/modules/es6.array.of.js","../../node_modules/core-js/modules/es6.array.copy-within.js","../../node_modules/core-js/modules/es6.array.find.js","../../node_modules/core-js/modules/es6.array.find-index.js","../../node_modules/core-js/modules/es6.array.fill.js","../../node_modules/core-js/modules/es6.number.is-finite.js","../../node_modules/core-js/modules/_is-integer.js","../../node_modules/core-js/modules/es6.number.is-integer.js","../../node_modules/core-js/modules/es6.number.is-safe-integer.js","../../node_modules/core-js/modules/es6.number.is-nan.js","../../node_modules/core-js/modules/es6.number.epsilon.js","../../node_modules/core-js/modules/es6.number.min-safe-integer.js","../../node_modules/core-js/modules/es6.number.max-safe-integer.js","../../node_modules/core-js/modules/_math-log1p.js","../../node_modules/core-js/modules/es6.math.acosh.js","../../node_modules/core-js/modules/es6.math.asinh.js","../../node_modules/core-js/modules/es6.math.atanh.js","../../node_modules/core-js/modules/_math-sign.js","../../node_modules/core-js/modules/es6.math.cbrt.js","../../node_modules/core-js/modules/es6.math.clz32.js","../../node_modules/core-js/modules/es6.math.cosh.js","../../node_modules/core-js/modules/_math-expm1.js","../../node_modules/core-js/modules/es6.math.expm1.js","../../node_modules/core-js/modules/_math-fround.js","../../node_modules/core-js/modules/es6.math.fround.js","../../node_modules/core-js/modules/es6.math.hypot.js","../../node_modules/core-js/modules/es6.math.imul.js","../../node_modules/core-js/modules/es6.math.log1p.js","../../node_modules/core-js/modules/es6.math.log10.js","../../node_modules/core-js/modules/es6.math.log2.js","../../node_modules/core-js/modules/es6.math.sign.js","../../node_modules/core-js/modules/es6.math.sinh.js","../../node_modules/core-js/modules/es6.math.tanh.js","../../node_modules/core-js/modules/es6.math.trunc.js","../../node_modules/core-js/modules/es7.array.includes.js","../../node_modules/core-js/modules/_object-to-array.js","../../node_modules/core-js/modules/es7.object.values.js","../../node_modules/core-js/modules/es7.object.entries.js","../../node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","../../node_modules/core-js/modules/_string-pad.js","../../node_modules/core-js/modules/_user-agent.js","../../node_modules/core-js/modules/es7.string.pad-start.js","../../node_modules/core-js/modules/es7.string.pad-end.js","../../node_modules/core-js/modules/web.timers.js","../../node_modules/core-js/modules/web.immediate.js","../../node_modules/core-js/modules/web.dom.iterable.js","../../node_modules/regenerator-runtime/runtime.js","../../node_modules/custom-event-polyfill/custom-event-polyfill.js","../../node_modules/url-polyfill/url-polyfill.js","utils/is.js","utils/events.js","utils/elements.js","utils/animation.js","utils/browser.js","support.js","html5.js","utils/objects.js","utils/strings.js","i18n.js","utils/arrays.js","storage.js","utils/loadSprite.js","utils/time.js","controls.js","utils/fetch.js","utils/urls.js","captions.js","config/defaults.js","config/types.js","console.js","fullscreen.js","utils/loadImage.js","ui.js","listeners.js","../../node_modules/loadjs/dist/loadjs.umd.js","utils/loadScript.js","plugins/vimeo.js","plugins/youtube.js","media.js","plugins/ads.js","source.js","plyr.js","plyr.polyfilled.js"],"names":["isObject","require$$0","document","require$$1","require$$2","anObject","toPrimitive","IE8_DOM_DEFINE","dP","createDesc","has","hide","global","aFunction","core","ctx","redefine","uid","toInteger","toLength","cof","IObject","defined","min","toIObject","toAbsoluteIndex","$keys","toObject","DESCRIPTORS","toIndex","$typed","anInstance","arrayFill","redefineAll","fails","LIBRARY","setToStringTag","SPECIES","buffer","VIEW","$export","speciesConstructor","TAG","Iterators","enumBugKeys","getKeys","IE_PROTO","PROTOTYPE","dPs","ITERATOR","classof","isArray","asc","ArrayProto","create","descriptor","$iterCreate","getPrototypeOf","step","addToUnscopables","pIE","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","getIterFn","isArrayIter","call","forOf","validate","$iterDefine","setSpecies","meta","$iterDetect","inheritIfRequired","strong","gOPS","createArrayMethod","id","$has","weak","assign","invoke","bind","gOPD","getProto","Reflect","gOPN","setProto","cel","html","process","Promise","newPromiseCapability","TypeError","isNode","newPromiseCapabilityModule","perform","promiseResolve","wksExt","toString","$GOPD","$DP","gOPNExt","wks","shared","ObjectProto","USE_NATIVE","$fails","_create","enumKeys","wksDefine","$getOwnPropertyDescriptor","$getPrototypeOf","isRegExp","MATCH","context","$defineProperty","createProperty","$find","KEY","forced","floor","isInteger","log1p","sign","$expm1","abs","exp","expm1","isEnum","ownKeys","repeat","navigator","userAgent","$pad","wrap","$task","i","NAME","$iterators","this","CustomEvent","getConstructor","input","constructor","instanceOf","Boolean","is","Object","Number","isNaN","String","Function","nullOrUndefined","Array","WeakMap","NodeList","Element","Text","Event","window","TextTrackCue","VTTCue","TextTrack","string","kind","test","array","nodeList","length","object","keys","supportsPassiveListeners","supported","options","defineProperty","addEventListener","removeEventListener","e","toggleListener","elements","event","callback","toggle","passive","capture","once","empty","function","from","forEach","element","Node","events","split","eventListeners","push","type","on","off","onceCallback","args","apply","triggerEvent","bubbles","detail","dispatchEvent","unbindListeners","item","wrapper","targets","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","key","value","setAttribute","createElement","text","innerText","insertAfter","target","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","s","trim","className","replace","stripped","parts","start","charAt","class","toggleHidden","hidden","boolean","hasAttribute","removeAttribute","toggleClass","force","method","classList","contains","hasClass","matches","prototype","match","querySelectorAll","includes","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getElements","container","getElement","querySelector","getFocusElement","focused","activeElement","body","trapFocus","focusable","first","last","trap","keyCode","shiftKey","focus","preventDefault","toggleState","pressed","getAttribute","state","transitionEndEvent","find","style","undefined","repaint","offsetHeight","browser","documentMode","documentElement","platform","support","provider","playsinline","api","ui","canPlayInline","isIPhone","video","rangeInput","audio","webkitSetPresentationMode","WebKitPlaybackTargetAvailabilityEvent","media","isHTML5","canPlayType","isVideo","isAudio","range","matchMedia","html5","sources","filter","mime","source","getSources","map","player","currentTime","playing","src","onLoadedMetaData","load","play","config","blankVideo","debug","log","cloneDeep","JSON","parse","stringify","getDeep","path","reduce","obj","extend","shift","generateId","prefix","Math","random","format","getPercentage","current","max","toFixed","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toPascalCase","toCamelCase","slice","stripHTML","fragment","createDocumentFragment","innerHTML","firstChild","getHTML","i18n","seekTime","title","dedupe","indexOf","closest","prev","curr","Storage","enabled","storage","store","localStorage","getItem","json","get","setItem","removeItem","loadSprite","url","hasId","isCached","exists","getElementById","update","data","insertAdjacentElement","useStorage","cached","content","then","result","catch","getHours","parseInt","getMinutes","getSeconds","formatTime","time","displayHours","inverted","number","hours","mins","secs","controls","URL","iconUrl","location","cors","host","isIE","svg4everybody","selectors","buttons","pause","restart","rewind","fastForward","mute","pip","airplay","settings","captions","fullscreen","progress","inputs","seek","volume","display","duration","seekTooltip","classNames","tooltip","error","warn","toggleNativeControls","namespace","getIconUrl","iconPath","iconPrefix","icon","createElementNS","use","setAttributeNS","attr","badge","menu","buttonType","button","label","labelPressed","iconPressed","control","createIcon","createLabel","updateRangeFill","suffix","list","checked","radio","faux","insertAdjacentHTML","forceHours","setRange","muted","setProgress","getElementsByTagName","nodeValue","buffered","isWebkit","setProperty","tooltips","percent","clientRect","getBoundingClientRect","visible","touch","width","pageX","left","parseFloat","updateTimeDisplay","invert","invertTime","seeking","updateProgress","hasDuration","displayDuration","paused","updateSeekTooltip","setting","tabs","panes","quality","toggleTab","checkMenu","getBadge","createBadge","sort","a","b","sorting","createMenuItem","getLabel","updateSetting","pane","currentTrack","default","tracks","getTracks","track","active","language","unshift","speed","isVimeo","values","some","tab","form","show","isMenuItem","isButton","stopPropagation","open","clone","position","opacity","name","scrollWidth","height","scrollHeight","isTab","transitions","reducedMotion","size","getTabSize","restore","propertyName","createButton","createRange","createProgress","createTime","inner","home","back","setQualityMenu","getQualityOptions","setSpeedMenu","props","findElements","labels","join","fetch","responseType","resolve","reject","request","XMLHttpRequest","responseText","response","Error","statusText","send","parseUrl","safe","parser","href","buildUrlParams","params","URLSearchParams","set","isYouTube","textTracks","setCaptionsMenu","hostname","protocol","createObjectURL","blob","userLanguage","setLanguage","trackEvents","mode","updateCues","trackRemoved","currentTrackNode","firstMatch","toggleCaptions","getCurrentTrack","embed","enableTextTrack","fromLanguage","sortIsDefault","sorted","cues","activeCues","cue","getCueAsHTML","cueText","changed","caption","defaults","providers","types","getProviderByUrl","youtube","vimeo","noop","Console","console","onChange","isIos","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","x","y","overflow","fallback","Fullscreen","property","native","iosNative","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","cancelFullScreen","exitFullscreen","action","enter","exit","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","prefixes","pre","loadImage","minWidth","image","Image","handler","onload","onerror","naturalWidth","uiSupported","listeners","inject","setup","loop","updateVolume","timeUpdate","checkPlaying","isTouch","ready","setTitle","poster","backgroundImage","setPoster","durationUpdate","isEmbed","iframe","enable","posterEnabled","loadPromise","togglePoster","stopped","toggleControls","loading","timers","setTimeout","hideControls","hover","Listeners","lastKey","handleKey","toggleMenu","firstTouch","code","which","altKey","ctrlKey","metaKey","seekByKey","editable","togglePlay","increaseVolume","decreaseVolume","forward","keyboard","tabFocus","delay","hasAudio","resetOnEnd","checkLoading","ads","initialized","managerPromise","clickToPlay","ended","disableContextMenu","concat","inputEvent","proxy","defaultHandler","customHandlerKey","customHandler","hasCustomHandler","returned","showHomeTab","showTab","currentTarget","eventType","done","seekTo","toggleInvert","noTransition","webkitDirectionInvertedFromDevice","direction","deltaY","deltaX","define","loadScript","parseId","regex","$2","getAspectRatio","getRatio","w","h","ratio","assurePlaybackState","hasPlayed","setAspectRatio","Vimeo","urls","sdk","padding","paddingBottom","offset","transform","autoplay","embedContainer","thumbnail_large","pathname","Player","autopause","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","selected","setPlaybackRate","setLoop","currentSrc","getVideoUrl","all","getVideoWidth","getVideoHeight","dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","strippedCues","getPaused","frame","seconds","build","mapQualityUnit","qualities","entry","mapQualityUnits","levels","level","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","videoId","getVideoData","google","items","snippet","currentId","startsWith","posterSrc","backgroundSize","message","instance","playbackRate","getPlaybackRate","getTitle","playVideo","pauseVideo","stopVideo","getPlaybackQuality","setPlaybackQuality","getAvailablePlaybackRates","buffering","setInterval","getVideoLoadedFraction","lastBuffered","seeked","getAvailableQualityLevels","unMute","Ads","publisherId","manager","loader","cuePoints","safetyTimer","countdownTimer","ima","googleIMA","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","displayContainer","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","tagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","cuePoint","seekElement","cuePercentage","AdEvent","onAdEvent","ad","getAd","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","cancel","contentComplete","seekedTime","discardAdBreak","splice","resize","ViewMode","NORMAL","initialize","init","adError","zIndex","destroy","handlers","Date","now","base","attribute","cancelRequests","check","crossorigin","addStyleHook","insertElements","Plyr","failed","jQuery","plyr","original","tagName","searchParams","truthy","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","end","fauxDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","change","states","inline","webkitPresentationMode","t"],"mappings":"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","file":"plyr.polyfilled.js","sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","module.exports = false;\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","module.exports = {};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","exports.f = {}.propertyIsEnumerable;\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","exports.f = Object.getOwnPropertySymbols;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch(error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if(iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(value).replace(/\\+/g, ' ');\r\n };\r\n\r\n var polyfillURLSearchParams= function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { value: {} });\r\n\r\n if(typeof searchString === 'string') {\r\n if(searchString !== '') {\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for(var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n } else if(searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(value, name);\r\n });\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if(name in this._entries) {\r\n this._entries[name].push(value.toString());\r\n } else {\r\n this._entries[name] = [value.toString()];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [value.toString()];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for(var name in this._entries) {\r\n if(this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for(var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) { items.push(name); });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) { items.push(value); });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) { items.push([name, value]); });\r\n return createIterator(items);\r\n };\r\n\r\n if(iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchString = '';\r\n this.forEach(function(value, name) {\r\n if(searchString.length > 0) searchString+= '&';\r\n searchString += serializeParam(name) + '=' + serializeParam(value);\r\n });\r\n return searchString;\r\n };\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n if(!('URLSearchParams' in global) || (new URLSearchParams('?a=1').toString() !== 'a=1')) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new URL('b', 'http://a');\r\n u.pathname = 'c%20d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch(e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if(typeof url !== 'string') url = String(url);\r\n\r\n var doc = document.implementation.createHTMLDocument('');\r\n window.doc = doc;\r\n if(base) {\r\n var baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n\r\n if(anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol', 'search']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href' : {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/,'');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname' : {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/,'/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = {'http:': 80, 'https:': 443, 'ftp:': 21}[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== ''\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'searchParams': {\r\n get: function() {\r\n var searchParams = new URLSearchParams(this.search);\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n _this.search = searchParams.toString();\r\n };\r\n });\r\n return searchParams;\r\n },\r\n enumerable: true\r\n }\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if(!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch(e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\n\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst is = {\n object(input) {\n return getConstructor(input) === Object;\n },\n number(input) {\n return getConstructor(input) === Number && !Number.isNaN(input);\n },\n string(input) {\n return getConstructor(input) === String;\n },\n boolean(input) {\n return getConstructor(input) === Boolean;\n },\n function(input) {\n return getConstructor(input) === Function;\n },\n array(input) {\n return !is.nullOrUndefined(input) && Array.isArray(input);\n },\n weakMap(input) {\n return instanceOf(input, WeakMap);\n },\n nodeList(input) {\n return instanceOf(input, NodeList);\n },\n element(input) {\n return instanceOf(input, Element);\n },\n textNode(input) {\n return getConstructor(input) === Text;\n },\n event(input) {\n return instanceOf(input, Event);\n },\n cue(input) {\n return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\n },\n track(input) {\n return instanceOf(input, TextTrack) || (!is.nullOrUndefined(input) && is.string(input.kind));\n },\n url(input) {\n return !is.nullOrUndefined(input) && /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/.test(input);\n },\n nullOrUndefined(input) {\n return input === null || typeof input === 'undefined';\n },\n empty(input) {\n return (\n is.nullOrUndefined(input) ||\n ((is.string(input) || is.array(input) || is.nodeList(input)) && !input.length) ||\n (is.object(input) && !Object.keys(input).length)\n );\n },\n};\n\nexport default is;\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(elements, event, callback, toggle = false, passive = true, capture = false, once = false) {\n // Bail if no elemetns, event, or callback\n if (is.empty(elements) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // If a nodelist is passed, call itself on each node\n if (is.nodeList(elements) || is.array(elements)) {\n // Create listener for each node\n Array.from(elements).forEach(element => {\n if (element instanceof Node) {\n toggleListener.call(null, element, event, callback, toggle, passive, capture);\n }\n });\n\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 && !once) {\n // Cache event listener\n this.eventListeners.push({ elements, type, callback, options });\n }\n\n elements[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 function onceCallback(...args) {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n }\n\n toggleListener(element, events, onceCallback, true, passive, capture, true);\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 { elements, type, callback, options } = item;\n elements.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { off, on } 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 Object.entries(attributes).forEach(([\n key,\n value,\n ]) => {\n element.setAttribute(key, value);\n });\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new <element>\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 target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n // Inject the new <element>\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 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.hasAttribute('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.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 null;\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 = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || 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// Get the focused element\nexport function getFocusElement() {\n let focused = document.activeElement;\n\n if (!focused || focused === document.body) {\n focused = null;\n } else {\n focused = document.querySelector(':focus');\n }\n\n return focused;\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 = getFocusElement();\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 if (toggle) {\n on(this.elements.container, 'keydown', trap, false);\n } else {\n off(this.elements.container, 'keydown', trap, false);\n }\n}\n\n// Toggle aria-pressed state on a toggle button\n// http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles\nexport function toggleState(element, input) {\n // If multiple elements passed\n if (is.array(element) || is.nodeList(element)) {\n Array.from(element).forEach(target => toggleState(target, input));\n return;\n }\n\n // Bail if no target\n if (!is.element(element)) {\n return;\n }\n\n // Get state\n const pressed = element.getAttribute('aria-pressed') === 'true';\n const state = is.boolean(input) ? input : !pressed;\n\n // Set the attribute on target\n element.setAttribute('aria-pressed', state);\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 toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\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 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// 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 let api = false;\n let ui = false;\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\n switch (`${provider}:${type}`) {\n case 'html5:video':\n api = support.video;\n ui = api && support.rangeInput && (!browser.isIPhone || canPlayInline);\n break;\n\n case 'html5:audio':\n api = support.audio;\n ui = api && support.rangeInput;\n break;\n\n case 'youtube:video':\n case 'vimeo:video':\n api = true;\n ui = support.rangeInput && (!browser.isIPhone || canPlayInline);\n break;\n\n default:\n api = support.audio && support.video;\n ui = api && support.rangeInput;\n }\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari only currently\n pip: (() => !browser.isIPhone && is.function(createElement('video').webkitSetPresentationMode))(),\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(type) {\n const { media } = this;\n\n try {\n // Bail if no checking function\n if (!this.isHTML5 || !is.function(media.canPlayType)) {\n return false;\n }\n\n // Check directly if codecs specified\n if (type.includes('codecs=')) {\n return media.canPlayType(type).replace(/no/, '');\n }\n\n // Type specific checks\n if (this.isVideo) {\n switch (type) {\n case 'video/webm':\n return media.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/no/, '');\n\n case 'video/mp4':\n return media.canPlayType('video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"').replace(/no/, '');\n\n case 'video/ogg':\n return media.canPlayType('video/ogg; codecs=\"theora\"').replace(/no/, '');\n\n default:\n return false;\n }\n } else if (this.isAudio) {\n switch (type) {\n case 'audio/mpeg':\n return media.canPlayType('audio/mpeg;').replace(/no/, '');\n\n case 'audio/ogg':\n return media.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/no/, '');\n\n case 'audio/wav':\n return media.canPlayType('audio/wav; codecs=\"1\"').replace(/no/, '');\n\n default:\n return false;\n }\n }\n } catch (e) {\n return false;\n }\n\n // If we got this far, we're stuffed\n return false;\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // <input type=\"range\"> 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';\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\n return sources.filter(source => support.mime.call(this, source.getAttribute('type')));\n },\n\n // Get quality levels\n getQualityOptions() {\n // Get sizes from <source> 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.filter(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, playing } = player;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Restore time\n const onLoadedMetaData = () => {\n player.currentTime = currentTime;\n };\n player.once('loadedmetadata', onLoadedMetaData);\n\n // Load new source\n player.media.load();\n\n // Resume playing\n if (playing) {\n player.play();\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// 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(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\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 './utils/is';\nimport { getDeep } from './utils/objects';\nimport { replaceAll } from './utils/strings';\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 return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([\n key,\n value,\n ]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\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// 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// Sprite loader\n// ==========================================================================\n\nimport Storage from './../storage';\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 => parseInt((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => parseInt((value / 60) % 60, 10);\nexport const getSeconds = value => parseInt(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 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport i18n from './i18n';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport { createElement, emptyElement, getAttributesFromSelector, getElement, getElements, hasClass, removeElement, setAttributes, toggleClass, toggleHidden, toggleState } from './utils/elements';\nimport { once } from './utils/events';\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\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 and store references in custom controls\n // TODO: Allow settings menus with custom 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(`.${this.config.classNames.tooltip}`);\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 <svg> icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create <svg>\n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n role: 'presentation',\n focusable: 'false',\n }),\n );\n\n // Create the <use> to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n } else {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n }\n\n // Add <use> to <svg>\n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(type, attr) {\n let text = i18n.get(type, this.config);\n const attributes = Object.assign({}, attr);\n\n switch (type) {\n case 'pip':\n text = 'PIP';\n break;\n\n case 'airplay':\n text = 'AirPlay';\n break;\n\n default:\n break;\n }\n\n if ('class' in attributes) {\n attributes.class += ` ${this.config.classNames.hidden}`;\n } else {\n attributes.class = this.config.classNames.hidden;\n }\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a <button>\n createButton(buttonType, attr) {\n const button = createElement('button');\n const attributes = Object.assign({}, attr);\n let type = toCamelCase(buttonType);\n\n let toggle = false;\n let label;\n let icon;\n let labelPressed;\n let iconPressed;\n\n if (!('type' in attributes)) {\n attributes.type = 'button';\n }\n\n if ('class' in attributes) {\n if (attributes.class.includes(this.config.classNames.control)) {\n attributes.class += ` ${this.config.classNames.control}`;\n }\n } else {\n attributes.class = this.config.classNames.control;\n }\n\n // Large play button\n switch (buttonType) {\n case 'play':\n toggle = true;\n label = 'play';\n labelPressed = 'pause';\n icon = 'play';\n iconPressed = 'pause';\n break;\n\n case 'mute':\n toggle = true;\n label = 'mute';\n labelPressed = 'unmute';\n icon = 'volume';\n iconPressed = 'muted';\n break;\n\n case 'captions':\n toggle = true;\n label = 'enableCaptions';\n labelPressed = 'disableCaptions';\n icon = 'captions-off';\n iconPressed = 'captions-on';\n break;\n\n case 'fullscreen':\n toggle = true;\n label = 'enterFullscreen';\n labelPressed = 'exitFullscreen';\n icon = 'enter-fullscreen';\n iconPressed = 'exit-fullscreen';\n break;\n\n case 'play-large':\n attributes.class += ` ${this.config.classNames.control}--overlaid`;\n type = 'play';\n label = 'play';\n icon = 'play';\n break;\n\n default:\n label = type;\n icon = buttonType;\n }\n\n // Setup toggle icon and labels\n if (toggle) {\n // Icon\n button.appendChild(controls.createIcon.call(this, iconPressed, { class: 'icon--pressed' }));\n button.appendChild(controls.createIcon.call(this, icon, { class: 'icon--not-pressed' }));\n\n // Label/Tooltip\n button.appendChild(controls.createLabel.call(this, labelPressed, { class: 'label--pressed' }));\n button.appendChild(controls.createLabel.call(this, label, { class: 'label--not-pressed' }));\n\n // Add aria attributes\n attributes['aria-pressed'] = false;\n } else {\n button.appendChild(controls.createIcon.call(this, icon));\n button.appendChild(controls.createLabel.call(this, label));\n }\n\n // Merge attributes\n extend(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n\n setAttributes(button, attributes);\n\n // We have multiple play buttons\n if (type === 'play') {\n if (!is.array(this.elements.buttons[type])) {\n this.elements.buttons[type] = [];\n }\n\n this.elements.buttons[type].push(button);\n } else {\n this.elements.buttons[type] = button;\n }\n\n return button;\n },\n\n // Create an <input type='range'>\n createRange(type, attributes) {\n // Seek label\n const label = createElement(\n 'label',\n {\n for: attributes.id,\n id: `${attributes.id}-label`,\n class: this.config.classNames.hidden,\n },\n i18n.get(type, this.config),\n );\n\n // Seek input\n const input = createElement(\n 'input',\n extend(\n getAttributesFromSelector(this.config.selectors.inputs[type]),\n {\n type: 'range',\n min: 0,\n max: 100,\n step: 0.01,\n value: 0,\n autocomplete: 'off',\n // A11y fixes for https://github.com/sampotts/plyr/issues/905\n role: 'slider',\n 'aria-labelledby': `${attributes.id}-label`,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': 0,\n },\n attributes,\n ),\n );\n\n this.elements.inputs[type] = input;\n\n // Set the fill for webkit now\n controls.updateRangeFill.call(this, input);\n\n return {\n label,\n input,\n };\n },\n\n // Create a <progress>\n createProgress(type, attributes) {\n const progress = createElement(\n 'progress',\n extend(\n getAttributesFromSelector(this.config.selectors.display[type]),\n {\n min: 0,\n max: 100,\n value: 0,\n role: 'presentation',\n 'aria-hidden': true,\n },\n attributes,\n ),\n );\n\n // Create the label inside\n if (type !== 'volume') {\n progress.appendChild(createElement('span', null, '0'));\n\n let suffix = '';\n switch (type) {\n case 'played':\n suffix = i18n.get('played', this.config);\n break;\n\n case 'buffer':\n suffix = i18n.get('buffered', this.config);\n break;\n\n default:\n break;\n }\n\n progress.innerText = `% ${suffix.toLowerCase()}`;\n }\n\n this.elements.display[type] = progress;\n\n return progress;\n },\n\n // Create time display\n createTime(type) {\n const attributes = getAttributesFromSelector(this.config.selectors.display[type]);\n\n const container = createElement(\n 'div',\n extend(attributes, {\n class: `plyr__time ${attributes.class}`,\n 'aria-label': i18n.get(type, this.config),\n }),\n '00:00',\n );\n\n // Reference for updates\n this.elements.display[type] = container;\n\n return container;\n },\n\n // Create a settings menu item\n createMenuItem({ value, list, type, title, badge = null, checked = false }) {\n const item = createElement('li');\n\n const label = createElement('label', {\n class: this.config.classNames.control,\n });\n\n const radio = createElement(\n 'input',\n extend(getAttributesFromSelector(this.config.selectors.inputs[type]), {\n type: 'radio',\n name: `plyr-${type}`,\n value,\n checked,\n class: 'plyr__sr-only',\n }),\n );\n\n const faux = createElement('span', { hidden: '' });\n\n label.appendChild(radio);\n label.appendChild(faux);\n label.insertAdjacentHTML('beforeend', title);\n\n if (is.element(badge)) {\n label.appendChild(badge);\n }\n\n item.appendChild(label);\n list.appendChild(item);\n },\n\n // Update the displayed time\n updateTimeDisplay(target = null, time = 0, inverted = false) {\n // Bail if there's no element to display or the value isn't a number\n if (!is.element(target) || !is.number(time)) {\n return;\n }\n\n // Always display hours if duration is over an hour\n const forceHours = getHours(this.duration) > 0;\n\n // eslint-disable-next-line no-param-reassign\n target.innerText = formatTime(time, forceHours, inverted);\n },\n\n // Update volume UI and storage\n updateVolume() {\n if (!this.supported.ui) {\n return;\n }\n\n // Update range\n if (is.element(this.elements.inputs.volume)) {\n controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n }\n\n // Update mute state\n if (is.element(this.elements.buttons.mute)) {\n toggleState(this.elements.buttons.mute, this.muted || this.volume === 0);\n }\n },\n\n // Update seek value and lower fill\n setRange(target, value = 0) {\n if (!is.element(target)) {\n return;\n }\n\n // eslint-disable-next-line\n target.value = value;\n\n // Webkit range fill\n controls.updateRangeFill.call(this, target);\n },\n\n // Update <progress> elements\n updateProgress(event) {\n if (!this.supported.ui || !is.event(event)) {\n return;\n }\n\n let value = 0;\n\n const setProgress = (target, input) => {\n const value = is.number(input) ? input : 0;\n const progress = is.element(target) ? target : this.elements.display.buffer;\n\n // Update value and label\n if (is.element(progress)) {\n progress.value = value;\n\n // Update text label inside\n const label = progress.getElementsByTagName('span')[0];\n if (is.element(label)) {\n label.childNodes[0].nodeValue = value;\n }\n }\n };\n\n if (event) {\n switch (event.type) {\n // Video playing\n case 'timeupdate':\n case 'seeking':\n case 'seeked':\n value = getPercentage(this.currentTime, this.duration);\n\n // Set seek range value only if it's a 'natural' time event\n if (event.type === 'timeupdate') {\n controls.setRange.call(this, this.elements.inputs.seek, value);\n }\n\n break;\n\n // Check buffer status\n case 'playing':\n case 'progress':\n setProgress(this.elements.display.buffer, this.buffered * 100);\n\n break;\n\n default:\n break;\n }\n }\n },\n\n // Webkit polyfill for lower fill range\n updateRangeFill(target) {\n // Get range from event if event passed\n const range = is.event(target) ? target.target : target;\n\n // Needs to be a valid <input type='range'>\n if (!is.element(range) || range.getAttribute('type') !== 'range') {\n return;\n }\n\n // Set aria value for https://github.com/sampotts/plyr/issues/905\n range.setAttribute('aria-valuenow', range.value);\n\n // WebKit only\n if (!browser.isWebkit) {\n return;\n }\n\n // Set CSS custom property\n range.style.setProperty('--value', `${range.value / range.max * 100}%`);\n },\n\n // Update hover tooltip for seeking\n updateSeekTooltip(event) {\n // Bail if setting not true\n if (!this.config.tooltips.seek || !is.element(this.elements.inputs.seek) || !is.element(this.elements.display.seekTooltip) || this.duration === 0) {\n return;\n }\n\n // Calculate percentage\n let percent = 0;\n const clientRect = this.elements.progress.getBoundingClientRect();\n const visible = `${this.config.classNames.tooltip}--visible`;\n\n const toggle = toggle => {\n toggleClass(this.elements.display.seekTooltip, visible, toggle);\n };\n\n // Hide on touch\n if (this.touch) {\n toggle(false);\n return;\n }\n\n // Determine percentage, if already visible\n if (is.event(event)) {\n percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n } else {\n return;\n }\n\n // Set bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Display the time a click would seek to\n controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, this.duration / 100 * percent);\n\n // Set position\n this.elements.display.seekTooltip.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && [\n 'mouseenter',\n 'mouseleave',\n ].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert);\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no ui or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleTab(setting, toggle) {\n toggleHidden(this.elements.settings.tabs[setting], !toggle);\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panes.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panes.quality.querySelector('ul');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleTab.call(this, type, toggle);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Empty the menu\n emptyElement(list);\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = quality => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach(quality => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}&times;`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panes[setting];\n let value = null;\n let list = container;\n\n switch (setting) {\n case 'captions':\n value = this.currentTrack;\n break;\n\n default:\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n\n break;\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('ul');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.tabs[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`input[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panes.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panes.loop.querySelector('ul');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.tabs.loop, false);\n toggleHidden(this.elements.settings.panes.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleTab.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panes.captions.querySelector('ul');\n const tracks = captions.getTracks.call(this);\n\n // Toggle the pane and tab\n controls.toggleTab.call(this, type, tracks.length);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!tracks.length) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.active && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.active,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu(options) {\n // Do nothing if not selected\n if (!this.config.controls.includes('settings') || !this.config.settings.includes('speed')) {\n return;\n }\n\n // Menu required\n if (!is.element(this.elements.settings.panes.speed)) {\n return;\n }\n\n const type = 'speed';\n\n // Set the speed options\n if (is.array(options)) {\n this.options.speed = options;\n } else if (this.isHTML5 || this.isVimeo) {\n this.options.speed = [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 1.75,\n 2,\n ];\n }\n\n // Set options if passed and filter based on config\n this.options.speed = this.options.speed.filter(speed => this.config.speed.options.includes(speed));\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleTab.call(this, type, toggle);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the list to populate\n const list = this.elements.settings.panes.speed.querySelector('ul');\n\n // Empty the menu\n emptyElement(list);\n\n // Create items\n this.options.speed.forEach(speed => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { tabs } = this.elements.settings;\n const visible = !is.empty(tabs) && Object.values(tabs).some(tab => !tab.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Show/hide menu\n toggleMenu(event) {\n const { form } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(form) || !is.element(button)) {\n return;\n }\n\n const show = is.boolean(event) ? event : is.element(form) && form.hasAttribute('hidden');\n\n if (is.event(event)) {\n const isMenuItem = is.element(form) && form.contains(event.target);\n const isButton = event.target === this.elements.buttons.settings;\n\n // If the click was inside the form or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && !isButton && show)) {\n return;\n }\n\n // Prevent the toggle being caught by the doc listener\n if (isButton) {\n event.stopPropagation();\n }\n }\n\n // Set form and button attributes\n if (is.element(button)) {\n button.setAttribute('aria-expanded', show);\n }\n\n if (is.element(form)) {\n toggleHidden(form, !show);\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n if (show) {\n form.removeAttribute('tabindex');\n } else {\n form.setAttribute('tabindex', -1);\n }\n }\n },\n\n // Get the natural size of a tab\n getTabSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Prevent input's being unchecked due to the name being identical\n Array.from(clone.querySelectorAll('input[name]')).forEach(input => {\n const name = input.getAttribute('name');\n input.setAttribute('name', `${name}-clone`);\n });\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Toggle Menu\n showTab(target = '') {\n const { menu } = this.elements.settings;\n const pane = document.getElementById(target);\n\n // Nothing to show, bail\n if (!is.element(pane)) {\n return;\n }\n\n // Are we targetting a tab? If not, bail\n const isTab = pane.getAttribute('role') === 'tabpanel';\n if (!isTab) {\n return;\n }\n\n // Hide all other tabs\n // Get other tabs\n const current = menu.querySelector('[role=\"tabpanel\"]:not([hidden])');\n const container = current.parentNode;\n\n // Set other toggles to be expanded false\n Array.from(menu.querySelectorAll(`[aria-controls=\"${current.getAttribute('id')}\"]`)).forEach(toggle => {\n toggle.setAttribute('aria-expanded', false);\n });\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getTabSize.call(this, pane);\n\n // Restore auto height/width\n const restore = e => {\n // We're only bothered about height and width on the container\n if (e.target !== container || ![\n 'width',\n 'height',\n ].includes(e.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n };\n\n // Listen for the transition finishing and restore auto height/width\n once(container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n current.setAttribute('tabindex', -1);\n\n // Set attributes on target\n toggleHidden(pane, false);\n\n const tabs = getElements.call(this, `[aria-controls=\"${target}\"]`);\n Array.from(tabs).forEach(tab => {\n tab.setAttribute('aria-expanded', true);\n });\n pane.removeAttribute('tabindex');\n\n // Focus the first item\n pane.querySelectorAll('button:not(:disabled), input:not(:disabled), [tabindex]')[0].focus();\n },\n\n // Build the default HTML\n // TODO: Set order based on order in the config.controls array?\n create(data) {\n // Do nothing if we want no controls\n if (is.empty(this.config.controls)) {\n return null;\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n\n // Restart button\n if (this.config.controls.includes('restart')) {\n container.appendChild(controls.createButton.call(this, 'restart'));\n }\n\n // Rewind button\n if (this.config.controls.includes('rewind')) {\n container.appendChild(controls.createButton.call(this, 'rewind'));\n }\n\n // Play/Pause button\n if (this.config.controls.includes('play')) {\n container.appendChild(controls.createButton.call(this, 'play'));\n }\n\n // Fast forward button\n if (this.config.controls.includes('fast-forward')) {\n container.appendChild(controls.createButton.call(this, 'fast-forward'));\n }\n\n // Progress\n if (this.config.controls.includes('progress')) {\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n const seek = controls.createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n });\n progress.appendChild(seek.label);\n progress.appendChild(seek.input);\n\n // Buffer progress\n progress.appendChild(controls.createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n container.appendChild(this.elements.progress);\n }\n\n // Media current time display\n if (this.config.controls.includes('current-time')) {\n container.appendChild(controls.createTime.call(this, 'currentTime'));\n }\n\n // Media duration display\n if (this.config.controls.includes('duration')) {\n container.appendChild(controls.createTime.call(this, 'duration'));\n }\n\n // Toggle mute button\n if (this.config.controls.includes('mute')) {\n container.appendChild(controls.createButton.call(this, 'mute'));\n }\n\n // Volume range control\n if (this.config.controls.includes('volume')) {\n const volume = createElement('div', {\n class: 'plyr__volume',\n });\n\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n const range = controls.createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n );\n volume.appendChild(range.label);\n volume.appendChild(range.input);\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle captions button\n if (this.config.controls.includes('captions')) {\n container.appendChild(controls.createButton.call(this, 'captions'));\n }\n\n // Settings button / menu\n if (this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n const menu = createElement('div', {\n class: 'plyr__menu',\n hidden: '',\n });\n\n menu.appendChild(\n controls.createButton.call(this, 'settings', {\n id: `plyr-settings-toggle-${data.id}`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const form = createElement('form', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n 'aria-labelled-by': `plyr-settings-toggle-${data.id}`,\n role: 'tablist',\n tabindex: -1,\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n 'aria-labelled-by': `plyr-settings-toggle-${data.id}`,\n role: 'tabpanel',\n });\n\n // Create the tab list\n const tabs = createElement('ul', {\n role: 'tablist',\n });\n\n // Build the tabs\n this.config.settings.forEach(type => {\n const tab = createElement('li', {\n role: 'tab',\n hidden: '',\n });\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n id: `plyr-settings-${data.id}-${type}-tab`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}-${type}`,\n 'aria-expanded': false,\n }),\n i18n.get(type, this.config),\n );\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n button.appendChild(value);\n tab.appendChild(button);\n tabs.appendChild(tab);\n\n this.elements.settings.tabs[type] = tab;\n });\n\n home.appendChild(tabs);\n inner.appendChild(home);\n\n // Build the panes\n this.config.settings.forEach(type => {\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n 'aria-labelled-by': `plyr-settings-${data.id}-${type}-tab`,\n role: 'tabpanel',\n tabindex: -1,\n });\n\n const back = createElement(\n 'button',\n {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}-home`,\n 'aria-expanded': false,\n },\n i18n.get(type, this.config),\n );\n\n pane.appendChild(back);\n\n const options = createElement('ul');\n\n pane.appendChild(options);\n inner.appendChild(pane);\n\n this.elements.settings.panes[type] = pane;\n });\n\n form.appendChild(inner);\n menu.appendChild(form);\n container.appendChild(menu);\n\n this.elements.settings.form = form;\n this.elements.settings.menu = menu;\n }\n\n // Picture in picture button\n if (this.config.controls.includes('pip') && support.pip) {\n container.appendChild(controls.createButton.call(this, 'pip'));\n }\n\n // Airplay button\n if (this.config.controls.includes('airplay') && support.airplay) {\n container.appendChild(controls.createButton.call(this, 'airplay'));\n }\n\n // Toggle fullscreen button\n if (this.config.controls.includes('fullscreen')) {\n container.appendChild(controls.createButton.call(this, 'fullscreen'));\n }\n\n // Larger overlaid play button\n if (this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(controls.createButton.call(this, 'play-large'));\n }\n\n this.elements.controls = container;\n\n if (this.isHTML5) {\n controls.setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n controls.setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n if (is.string(this.config.controls) || is.element(this.config.controls)) {\n // String or HTMLElement passed as the option\n container = this.config.controls;\n } else if (is.function(this.config.controls)) {\n // A custom function to build controls\n // The function can return a HTMLElement or String\n container = this.config.controls.call(this, props);\n } else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = input => {\n let result = input;\n\n Object.entries(props).forEach(([\n key,\n value,\n ]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n } else if (is.element(container)) {\n container.innerHTML = replace(container.innerHTML);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML\n if (is.element(container)) {\n target.appendChild(container);\n } else if (container) {\n target.insertAdjacentHTML('beforeend', container);\n }\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Edge sometimes doesn't finish the paint so force a redraw\n if (window.navigator.userAgent.includes('Edge')) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const labels = getElements.call(\n this,\n [\n this.config.selectors.controls.wrapper,\n ' ',\n this.config.selectors.labels,\n ' .',\n this.config.classNames.hidden,\n ].join(''),\n );\n\n Array.from(labels).forEach(label => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n label.setAttribute('role', 'tooltip');\n });\n }\n },\n};\n\nexport default controls;\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.statusText);\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// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n if (!is.object(input)) {\n return '';\n }\n\n const params = new URLSearchParams();\n\n Object.entries(input).forEach(([\n key,\n value,\n ]) => {\n params.set(key, value);\n });\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport i18n from './i18n';\nimport support from './support';\nimport browser from './utils/browser';\nimport { createElement, emptyElement, getAttributesFromSelector, insertAfter, removeElement, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (is.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach(track => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (url !== null && url.hostname !== window.location.href.hostname && [\n 'http:',\n 'https:',\n ].includes(url.protocol)) {\n fetch(src, 'blob')\n .then(blob => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Try to load the value from storage\n let active = this.storage.get('captions');\n\n // Otherwise fall back to the default config\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n // Get language from storage, fallback to config\n let language = this.storage.get('language') || this.config.captions.language;\n if (language === 'auto') {\n [language] = (navigator.language || navigator.userLanguage).split('-');\n }\n // Set language and show if active\n captions.setLanguage.call(this, language, active);\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { language, meta } = this.captions;\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks.filter(track => !meta.get(track)).forEach(track => {\n this.debug.log('Track added', track);\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n track.mode = 'hidden';\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n const trackRemoved = !tracks.find(track => track === this.captions.currentTrackNode);\n const firstMatch = this.language !== language && tracks.find(track => track.language === language);\n\n // Update language if removed or first matching track added\n if (trackRemoved || firstMatch) {\n captions.setLanguage.call(this, language, this.config.captions.active);\n }\n\n // Enable or disable captions based on track length\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n\n // Update available languages in list\n if ((this.config.controls || []).includes('settings') && this.config.settings.includes('captions')) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n set(index, setLanguage = true, show = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n this.toggleCaptions(false);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = captions.getCurrentTrack.call(this);\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Prevent setting language in some cases, since it can violate user's intentions\n if (setLanguage) {\n this.captions.language = language;\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n\n // Show captions\n if (show) {\n this.toggleCaptions(true);\n }\n },\n\n setLanguage(language, show = true) {\n if (!is.string(language)) {\n this.debug.warn('Invalid language argument', language);\n return;\n }\n // Normalize\n this.captions.language = language.toLowerCase();\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.getCurrentTrack.call(this, true);\n captions.set.call(this, tracks.indexOf(track), false, show);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks.filter(track => !this.isHTML5 || update || this.captions.meta.has(track)).filter(track => [\n 'captions',\n 'subtitles',\n ].includes(track.kind));\n },\n\n // Get the current track for the current language\n getCurrentTrack(fromLanguage = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n return (!fromLanguage && tracks[this.currentTrack]) || sorted.find(track => track.language === this.captions.language) || sorted[0];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.active) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Aspect ratio (for embeds)\n ratio: '16:9',\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.3.12/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n options: [\n 4320,\n 2880,\n 2160,\n 1440,\n 1080,\n 720,\n 576,\n 480,\n 360,\n 240,\n 'default', // YouTube's \"auto\"\n ],\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n options: [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 1.75,\n 2,\n ],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback for vintage browsers\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n 'fullscreen',\n ],\n settings: [\n 'captions',\n 'quality',\n 'speed',\n ],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/v2/video/{0}.json',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n 'qualitychange',\n 'qualityrequested',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n menu: {\n quality: '.js-plyr__menu__list--quality',\n },\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isIos: 'plyr--is-ios',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n tabFocus: 'plyr__tab-focus',\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n },\n },\n\n // API keys\n keys: {\n google: null,\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nconst noop = () => {};\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n get warn() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n get error() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { hasClass, toggleClass, toggleState, trapFocus } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nfunction onChange() {\n if (!this.enabled) {\n return;\n }\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n toggleState(button, this.active);\n }\n\n // Trigger an event\n triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n\n // Trap focus in container\n if (!browser.isIos) {\n trapFocus.call(this.player, this.target, this.active);\n }\n}\n\nfunction toggleFallback(toggle = false) {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX || 0,\n y: window.scrollY || 0,\n };\n } else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Toggle button and fire events\n onChange.call(this);\n}\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`, () => {\n // TODO: Filter for target??\n onChange.call(this);\n });\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', event => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.toggle();\n });\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get native() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) {\n return '';\n }\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = [\n 'webkit',\n 'moz',\n 'ms',\n ];\n\n prefixes.some(pre => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is enabled\n get enabled() {\n return (\n (Fullscreen.native || this.player.config.fullscreen.fallback) &&\n this.player.config.fullscreen.enabled &&\n this.player.supported.ui &&\n this.player.isVideo\n );\n }\n\n // Get active state\n get active() {\n if (!this.enabled) {\n return false;\n }\n\n // Fallback using classname\n if (!Fullscreen.native) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];\n\n return element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.container;\n }\n\n // Update UI\n update() {\n if (this.enabled) {\n this.player.debug.log(`${Fullscreen.native ? 'Native' : 'Fallback'} fullscreen enabled`);\n } else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n }\n\n // Make an element fullscreen\n enter() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.playing) {\n this.target.webkitEnterFullscreen();\n }\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, true);\n } else if (!this.prefix) {\n this.target.requestFullscreen();\n } else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n }\n\n // Bail from fullscreen\n exit() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitExitFullscreen();\n this.player.play();\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, false);\n } else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n } else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n }\n\n // Toggle state\n toggle() {\n if (!this.active) {\n this.enter();\n } else {\n this.exit();\n }\n }\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport i18n from './i18n';\nimport support from './support';\nimport browser from './utils/browser';\nimport { getElement, toggleClass, toggleState } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport loadImage from './utils/loadImage';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n } else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(this.elements.container, this.config.classNames.pip.supported, support.pip && this.isHTML5 && this.isVideo);\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add iOS class\n toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster && this.elements.poster && !this.elements.poster.style.backgroundImage) {\n ui.setPoster.call(this, this.poster);\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n\n // Set container label\n this.elements.container.setAttribute('aria-label', this.config.title);\n }\n\n // If there's a play button, set label\n if (is.nodeList(this.elements.buttons.play)) {\n Array.from(this.elements.buttons.play).forEach(button => {\n button.setAttribute('aria-label', label);\n });\n }\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n setPoster(poster) {\n // Set property regardless of validity\n this.media.setAttribute('poster', poster);\n\n // Bail if element is missing\n if (!is.element(this.elements.poster)) {\n return Promise.reject();\n }\n\n // Load the image, and set poster if successful\n const loadPromise = loadImage(poster).then(() => {\n this.elements.poster.style.backgroundImage = `url('${poster}')`;\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n ui.togglePoster.call(this, true);\n return poster;\n });\n\n // Hide the element if the poster can't be loaded (otherwise it will just be a black element covering the video)\n loadPromise.catch(() => ui.togglePoster.call(this, false));\n\n // Return the promise so the caller can use it as well\n return loadPromise;\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set ARIA state\n toggleState(this.elements.buttons.play, this.playing);\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = [\n 'stalled',\n 'waiting',\n ].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(() => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n }, this.loading ? 250 : 0);\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls } = this.elements;\n\n if (controls && this.config.hideControls) {\n // Show controls if force, loading, paused, or button interaction, otherwise hide\n this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover));\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport browser from './utils/browser';\nimport { getElement, getElements, getFocusElement, matches, toggleClass, toggleHidden } from './utils/elements';\nimport { on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n this.player.currentTime = this.player.duration / 10 * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Which keycodes should we prevent default\n const preventDefault = [\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 56,\n 57,\n 32,\n 75,\n 38,\n 40,\n 77,\n 39,\n 37,\n 70,\n 67,\n 73,\n 76,\n 79,\n ];\n\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = getFocusElement();\n if (is.element(focused) && (\n focused !== this.player.elements.inputs.seek &&\n matches(focused, this.player.config.selectors.editable))\n ) {\n return;\n }\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n this.player.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n this.player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n this.player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n this.player.muted = !this.player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n this.player.forward();\n break;\n\n case 37:\n // Arrow back\n this.player.rewind();\n break;\n\n case 70:\n // F key\n this.player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n this.player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n this.player.loop = !this.player.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (!this.player.fullscreen.enabled && this.player.fullscreen.active && code === 27) {\n this.player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n this.player.touch = true;\n\n // Add touch class\n toggleClass(this.player.elements.container, this.player.config.classNames.isTouch, true);\n\n }\n\n // Global window & document listeners\n global(toggle = true) {\n // Keyboard shortcuts\n if (this.player.config.keyboard.global) {\n toggleListener.call(this.player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once(document.body, 'touchstart', this.firstTouch);\n }\n\n // Container listeners\n container() {\n // Keyboard shortcuts\n if (!this.player.config.keyboard.global && this.player.config.keyboard.focused) {\n on.call(this.player, this.player.elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Detect tab focus\n // Remove class on blur/focusout\n on.call(this.player, this.player.elements.container, 'focusout', event => {\n toggleClass(event.target, this.player.config.classNames.tabFocus, false);\n });\n // Add classname to tabbed elements\n on.call(this.player, this.player.elements.container, 'keydown', event => {\n if (event.keyCode !== 9) {\n return;\n }\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n setTimeout(() => {\n toggleClass(getFocusElement(), this.player.config.classNames.tabFocus, true);\n }, 0);\n });\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(this.player, this.player.elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', event => {\n const { controls } = this.player.elements;\n\n // Remove button states for fullscreen\n if (event.type === 'enterfullscreen') {\n controls.pressed = false;\n controls.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = [\n 'touchstart',\n 'touchmove',\n 'mousemove',\n ].includes(event.type);\n\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(this.player, true);\n // Use longer timeout for touch devices\n delay = this.player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(this.player.timers.controls);\n // Timer to prevent flicker when seeking\n this.player.timers.controls = setTimeout(() => ui.toggleControls.call(this.player, false), delay);\n });\n }\n\n // Listen for media events\n media() {\n // Time change on media\n on.call(this.player, this.player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(this.player, event));\n\n // Display duration\n on.call(this.player, this.player.media, 'durationchange loadeddata loadedmetadata', event => controls.durationUpdate.call(this.player, event));\n\n // Check for audio tracks on load\n // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n on.call(this.player, this.player.media, 'canplay', () => {\n toggleHidden(this.player.elements.volume, !this.player.hasAudio);\n toggleHidden(this.player.elements.buttons.mute, !this.player.hasAudio);\n });\n\n // Handle the media finishing\n on.call(this.player, this.player.media, 'ended', () => {\n // Show poster on end\n if (this.player.isHTML5 && this.player.isVideo && this.player.config.resetOnEnd) {\n // Restart\n this.player.restart();\n }\n });\n\n // Check for buffer progress\n on.call(this.player, this.player.media, 'progress playing seeking seeked', event => controls.updateProgress.call(this.player, event));\n\n // Handle volume changes\n on.call(this.player, this.player.media, 'volumechange', event => controls.updateVolume.call(this.player, event));\n\n // Handle play/pause\n on.call(this.player, this.player.media, 'playing play pause ended emptied timeupdate', event => ui.checkPlaying.call(this.player, event));\n\n // Loading state\n on.call(this.player, this.player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(this.player, event));\n\n // If autoplay, then load advertisement if required\n // TODO: Show some sort of loading state while the ad manager loads else there's a delay before ad shows\n on.call(this.player, this.player.media, 'playing', () => {\n if (!this.player.ads) {\n return;\n }\n\n // If ads are enabled, wait for them first\n if (this.player.ads.enabled && !this.player.ads.initialized) {\n // Wait for manager response\n this.player.ads.managerPromise.then(() => this.player.ads.play()).catch(() => this.player.play());\n }\n });\n\n // Click video\n if (this.player.supported.ui && this.player.config.clickToPlay && !this.player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(this.player, `.${this.player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause ore restart\n on.call(this.player, wrapper, 'click', () => {\n // Touch devices will just show controls (if we're hiding controls)\n if (this.player.config.hideControls && this.player.touch && !this.player.paused) {\n return;\n }\n\n if (this.player.paused) {\n this.player.play();\n } else if (this.player.ended) {\n this.player.restart();\n this.player.play();\n } else {\n this.player.pause();\n }\n });\n }\n\n // Disable right click\n if (this.player.supported.ui && this.player.config.disableContextMenu) {\n on.call(this.player,\n this.player.elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(this.player, this.player.media, 'volumechange', () => {\n // Save to storage\n this.player.storage.set({ volume: this.player.volume, muted: this.player.muted });\n });\n\n // Speed change\n on.call(this.player, this.player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'speed');\n\n // Save to storage\n this.player.storage.set({ speed: this.player.speed });\n });\n\n // Quality request\n on.call(this.player, this.player.media, 'qualityrequested', event => {\n // Save to storage\n this.player.storage.set({ quality: event.detail.quality });\n });\n\n // Quality change\n on.call(this.player, this.player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(this.player, 'quality', null, event.detail.quality);\n });\n\n // Caption language change\n on.call(this.player, this.player.media, 'languagechange', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'captions');\n\n // Save to storage\n this.player.storage.set({ language: this.player.language });\n });\n\n // Captions toggle\n on.call(this.player, this.player.media, 'captionsenabled captionsdisabled', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'captions');\n\n // Save to storage\n this.player.storage.set({ captions: this.player.captions.active });\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n on.call(this.player, this.player.media, this.player.config.events.concat([\n 'keyup',\n 'keydown',\n ]).join(' '), event => {\n let {detail = {}} = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = this.player.media.error;\n }\n\n triggerEvent.call(this.player, this.player.elements.container, event.type, true, detail);\n });\n }\n\n // Listen for control events\n controls() {\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Run default and custom handlers\n const proxy = (event, defaultHandler, customHandlerKey) => {\n const customHandler = this.player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(this.player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned && is.function(defaultHandler)) {\n defaultHandler.call(this.player, event);\n }\n };\n\n // Trigger custom and default handlers\n const bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const customHandler = this.player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(this.player, element, type, event => proxy(event, defaultHandler, customHandlerKey), passive && !hasCustomHandler);\n };\n\n // Play/pause toggle\n bind(this.player.elements.buttons.play, 'click', this.player.togglePlay, 'play');\n\n // Pause\n bind(this.player.elements.buttons.restart, 'click', this.player.restart, 'restart');\n\n // Rewind\n bind(this.player.elements.buttons.rewind, 'click', this.player.rewind, 'rewind');\n\n // Rewind\n bind(this.player.elements.buttons.fastForward, 'click', this.player.forward, 'fastForward');\n\n // Mute toggle\n bind(\n this.player.elements.buttons.mute,\n 'click',\n () => {\n this.player.muted = !this.player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n bind(this.player.elements.buttons.captions, 'click', this.player.toggleCaptions);\n\n // Fullscreen toggle\n bind(\n this.player.elements.buttons.fullscreen,\n 'click',\n () => {\n this.player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n bind(\n this.player.elements.buttons.pip,\n 'click',\n () => {\n this.player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n bind(this.player.elements.buttons.airplay, 'click', this.player.airplay, 'airplay');\n\n // Settings menu\n bind(this.player.elements.buttons.settings, 'click', event => {\n controls.toggleMenu.call(this.player, event);\n });\n\n // Settings menu\n bind(this.player.elements.settings.form, 'click', event => {\n event.stopPropagation();\n\n // Go back to home tab on click\n const showHomeTab = () => {\n const id = `plyr-settings-${this.player.id}-home`;\n controls.showTab.call(this.player, id);\n };\n\n // Settings menu items - use event delegation as items are added/removed\n if (matches(event.target, this.player.config.selectors.inputs.language)) {\n proxy(\n event,\n () => {\n this.player.currentTrack = Number(event.target.value);\n showHomeTab();\n },\n 'language',\n );\n } else if (matches(event.target, this.player.config.selectors.inputs.quality)) {\n proxy(\n event,\n () => {\n this.player.quality = event.target.value;\n showHomeTab();\n },\n 'quality',\n );\n } else if (matches(event.target, this.player.config.selectors.inputs.speed)) {\n proxy(\n event,\n () => {\n this.player.speed = parseFloat(event.target.value);\n showHomeTab();\n },\n 'speed',\n );\n } else {\n const tab = event.target;\n controls.showTab.call(this.player, tab.getAttribute('aria-controls'));\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n bind(this.player.elements.inputs.seek, 'mousedown mousemove', event => {\n const clientRect = this.player.elements.progress.getBoundingClientRect();\n const percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n bind(this.player.elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n\n const code = event.keyCode ? event.keyCode : event.which;\n const eventType = event.type;\n\n if ((eventType === 'keydown' || eventType === 'keyup') && (code !== 39 && code !== 37)) {\n return;\n }\n // Was playing before?\n const play = seek.hasAttribute('play-on-seeked');\n\n // Done seeking\n const done = [\n 'mouseup',\n 'touchend',\n 'keyup',\n ].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute('play-on-seeked');\n this.player.play();\n } else if (!done && this.player.playing) {\n seek.setAttribute('play-on-seeked', '');\n this.player.pause();\n }\n });\n\n // Seek\n bind(\n this.player.elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n this.player.currentTime = seekTo / seek.max * this.player.duration;\n },\n 'seek',\n );\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (this.player.config.toggleInvert && !is.element(this.player.elements.display.duration)) {\n bind(this.player.elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (this.player.currentTime === 0) {\n return;\n }\n\n this.player.config.invertTime = !this.player.config.invertTime;\n\n controls.timeUpdate.call(this.player);\n });\n }\n\n // Volume\n bind(\n this.player.elements.inputs.volume,\n inputEvent,\n event => {\n this.player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Polyfill for lower fill in <input type=\"range\"> for webkit\n if (browser.isWebkit) {\n bind(getElements.call(this.player, 'input[type=\"range\"]'), 'input', event => {\n controls.updateRangeFill.call(this.player, event.target);\n });\n }\n\n // Seek tooltip\n bind(this.player.elements.progress, 'mouseenter mouseleave mousemove', event => controls.updateSeekTooltip.call(this.player, event));\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n bind(this.player.elements.controls, 'mouseenter mouseleave', event => {\n this.player.elements.controls.hover = !this.player.touch && event.type === 'mouseenter';\n });\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n bind(this.player.elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n this.player.elements.controls.pressed = [\n 'mousedown',\n 'touchstart',\n ].includes(event.type);\n });\n\n // Focus in/out on controls\n bind(this.player.elements.controls, 'focusin focusout', event => {\n const { config, elements, timers } = this.player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, event.type === 'focusin');\n\n // Toggle\n ui.toggleControls.call(this.player, event.type === 'focusin');\n\n // If focusin, hide again after delay\n if (event.type === 'focusin') {\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for keyboard users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n // Hide\n timers.controls = setTimeout(() => ui.toggleControls.call(this.player, false), delay);\n }\n });\n\n // Mouse wheel for volume\n bind(\n this.player.elements.inputs.volume,\n 'wheel',\n event => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n const step = 1 / 50;\n let direction = 0;\n\n // Scroll down (or up on natural) to decrease\n if (event.deltaY < 0 || event.deltaX > 0) {\n if (inverted) {\n this.player.decreaseVolume(step);\n direction = -1;\n } else {\n this.player.increaseVolume(step);\n direction = 1;\n }\n }\n\n // Scroll up (or down on natural) to increase\n if (event.deltaY > 0 || event.deltaX < 0) {\n if (inverted) {\n this.player.increaseVolume(step);\n direction = 1;\n } else {\n this.player.decreaseVolume(step);\n direction = -1;\n }\n }\n\n // Don't break page scrolling at max and min\n if ((direction === 1 && this.player.media.volume < 1) || (direction === -1 && this.player.media.volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isCss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n isCss = true;\n\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // Note: The following code isolates IE using `hideFocus` and treats empty\n // stylesheets as failures to get around lack of onerror support\n if (isCss && 'hideFocus' in e) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText`\n result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n }\n\n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function)} [arg1] - The bundleId or success callback\n * @param {Function} [arg2] - The success or error callback\n * @param {Function} [arg3] - The error callback\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n // load scripts\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from './../captions';\nimport controls from './../controls';\nimport ui from './../ui';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadScript from './../utils/loadScript';\nimport { format, stripHTML } from './../utils/strings';\nimport { buildUrlParams } from './../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Get aspect ratio for dimensions\nfunction getAspectRatio(width, height) {\n const getRatio = (w, h) => (h === 0 ? w : getRatio(h, w % h));\n const ratio = getRatio(width, height);\n return `${width / ratio}:${height / ratio}`;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set intial ratio\n vimeo.setAspectRatio.call(this);\n\n // Load the API if not already\n if (!is.object(window.Vimeo)) {\n loadScript(this.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(this);\n })\n .catch(error => {\n this.debug.warn('Vimeo API failed to load', error);\n });\n } else {\n vimeo.ready.call(this);\n }\n },\n\n // Set aspect ratio\n // For Vimeo we have an extra 300% height <div> to hide the standard controls and UI\n setAspectRatio(input) {\n const ratio = is.string(input) ? input.split(':') : this.config.ratio.split(':');\n const padding = 100 / ratio[0] * ratio[1];\n this.elements.wrapper.style.paddingBottom = `${padding}%`;\n\n if (this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n\n // Get Vimeo params for the iframe\n const options = {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n // muted: player.muted,\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: 0,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n };\n const params = buildUrlParams(options);\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Inject the package\n const wrapper = createElement('div', { class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href);\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(error => {\n // Hide menu item (and menu if empty)\n if (error.name === 'Error') {\n controls.setSpeedMenu.call(player, []);\n }\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([\n player.embed.getVideoWidth(),\n player.embed.getVideoHeight(),\n ]).then(dimensions => {\n const ratio = getAspectRatio(dimensions[0], dimensions[1]);\n vimeo.setAspectRatio.call(this, ratio);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport controls from './../controls';\nimport ui from './../ui';\nimport { dedupe } from './../utils/arrays';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadImage from './../utils/loadImage';\nimport loadScript from './../utils/loadScript';\nimport { format, generateId } from './../utils/strings';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Standardise YouTube quality unit\nfunction mapQualityUnit(input) {\n const qualities = {\n hd2160: 2160,\n hd1440: 1440,\n hd1080: 1080,\n hd720: 720,\n large: 480,\n medium: 360,\n small: 240,\n tiny: 144,\n };\n\n const entry = Object.entries(qualities).find(entry => entry.includes(input));\n\n if (entry) {\n // Get the match corresponding to the input\n return entry.find(value => value !== input);\n }\n\n return 'default';\n}\n\nfunction mapQualityUnits(levels) {\n if (is.empty(levels)) {\n return levels;\n }\n\n return dedupe(levels.map(level => mapQualityUnit(level)));\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set aspect ratio\n youtube.setAspectRatio.call(this);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Load the API\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n\n // Setup callback for the API\n // YouTube has it's own system of course...\n window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];\n\n // Add to queue\n window.onYouTubeReadyCallbacks.push(() => {\n youtube.ready.call(this);\n });\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n window.onYouTubeReadyCallbacks.forEach(callback => {\n callback();\n });\n };\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n // Try via undocumented API method first\n // This method disappears now and then though...\n // https://github.com/sampotts/plyr/issues/709\n if (is.function(this.embed.getVideoData)) {\n const { title } = this.embed.getVideoData();\n\n if (is.empty(title)) {\n this.config.title = title;\n ui.setTitle.call(this);\n return;\n }\n }\n\n // Or via Google API\n const key = this.config.keys.google;\n if (is.string(key) && !is.empty(key)) {\n const url = format(this.config.urls.youtube.api, videoId, key);\n\n fetch(url)\n .then(result => {\n if (is.object(result)) {\n this.config.title = result.items[0].snippet.title;\n ui.setTitle.call(this);\n }\n })\n .catch(() => {});\n }\n },\n\n // Set aspect ratio\n setAspectRatio() {\n const ratio = this.config.ratio.split(':');\n this.elements.wrapper.style.paddingBottom = `${100 / ratio[0] * ratio[1]}%`;\n },\n\n // API ready\n ready() {\n const player = this;\n\n // Ignore already setup (race condition)\n const currentId = player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the <iframe> with a <div> due to YouTube API issues\n const videoId = parseId(source);\n const id = generateId(player.provider);\n const container = createElement('div', { id });\n player.media = replaceElement(container, player.media);\n\n // Set poster image\n const posterSrc = format => `https://img.youtube.com/vi/${videoId}/${format}default.jpg`;\n\n // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)\n loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded\n .catch(() => loadImage(posterSrc('sd'), 121)) // 480p padded 4:3\n .catch(() => loadImage(posterSrc('hq'))) // 360p padded 4:3. Always exists\n .then(image => ui.setPoster.call(player, image.src))\n .then(posterSrc => {\n // If the image is padded, use background-size \"cover\" instead (like youtube does too with their posters)\n if (!posterSrc.includes('maxres')) {\n player.elements.poster.style.backgroundSize = 'cover';\n }\n });\n\n // Setup instance\n // https://developers.google.com/youtube/iframe_api_reference\n player.embed = new window.YT.Player(id, {\n videoId,\n playerVars: {\n autoplay: player.config.autoplay ? 1 : 0, // Autoplay\n controls: player.supported.ui ? 0 : 1, // Only show controls if not fully supported\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n disablekb: 1, // Disable keyboard as we handle it\n playsinline: 1, // Allow iOS inline playback\n\n // Tracking for stats\n // origin: window ? `${window.location.protocol}//${window.location.host}` : null,\n widget_referrer: window ? window.location.href : null,\n\n // Captions are flaky on YouTube\n cc_load_policy: player.captions.active ? 1 : 0,\n cc_lang_pref: player.config.captions.language,\n },\n events: {\n onError(event) {\n // If we've already fired an error, don't do it again\n // YouTube fires onError twice\n if (is.object(player.media.error)) {\n return;\n }\n\n const detail = {\n code: event.data,\n };\n\n // Messages copied from https://developers.google.com/youtube/iframe_api_reference#onError\n switch (event.data) {\n case 2:\n detail.message =\n 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.';\n break;\n\n case 5:\n detail.message =\n 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';\n break;\n\n case 100:\n detail.message =\n 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.';\n break;\n\n case 101:\n case 150:\n detail.message = 'The owner of the requested video does not allow it to be played in embedded players.';\n break;\n\n default:\n detail.message = 'An unknown error occured';\n break;\n }\n\n player.media.error = detail;\n\n triggerEvent.call(player, player.media, 'error');\n },\n onPlaybackQualityChange() {\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: player.media.quality,\n });\n },\n onPlaybackRateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Get current speed\n player.media.playbackRate = instance.getPlaybackRate();\n\n triggerEvent.call(player, player.media, 'ratechange');\n },\n onReady(event) {\n // Get the instance\n const instance = event.target;\n\n // Get the title\n youtube.getTitle.call(player, videoId);\n\n // Create a faux HTML5 API using the YouTube API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n instance.playVideo();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n instance.pauseVideo();\n };\n\n player.media.stop = () => {\n instance.stopVideo();\n };\n\n player.media.duration = instance.getDuration();\n player.media.paused = true;\n\n // Seeking\n player.media.currentTime = 0;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return Number(instance.getCurrentTime());\n },\n set(time) {\n // If paused, mute audio preventively (YouTube starts playing on seek if the video hasn't been played yet).\n if (player.paused) {\n player.embed.mute();\n }\n\n // Set seeking state and trigger event\n player.media.seeking = true;\n triggerEvent.call(player, player.media, 'seeking');\n\n // Seek after events sent\n instance.seekTo(time);\n },\n });\n\n // Playback speed\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return instance.getPlaybackRate();\n },\n set(input) {\n instance.setPlaybackRate(input);\n },\n });\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n return mapQualityUnit(instance.getPlaybackQuality());\n },\n set(input) {\n instance.setPlaybackQuality(mapQualityUnit(input));\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n volume = input;\n instance.setVolume(volume * 100);\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : muted;\n muted = toggle;\n instance[toggle ? 'mute' : 'unMute']();\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Source\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return instance.getVideoUrl();\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Get available speeds\n player.options.speed = instance.getAvailablePlaybackRates();\n\n // Set the tabindex to avoid focus entering iframe\n if (player.supported.ui) {\n player.media.setAttribute('tabindex', -1);\n }\n\n triggerEvent.call(player, player.media, 'timeupdate');\n triggerEvent.call(player, player.media, 'durationchange');\n\n // Reset timer\n clearInterval(player.timers.buffering);\n\n // Setup buffering\n player.timers.buffering = setInterval(() => {\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n\n // Trigger progress only when we actually buffer something\n if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) {\n triggerEvent.call(player, player.media, 'progress');\n }\n\n // Set last buffer point\n player.media.lastBuffered = player.media.buffered;\n\n // Bail if we're at 100%\n if (player.media.buffered === 1) {\n clearInterval(player.timers.buffering);\n\n // Trigger event\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n }, 200);\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 50);\n },\n onStateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Reset timer\n clearInterval(player.timers.playing);\n\n const seeked = player.media.seeking && [\n 1,\n 2,\n ].includes(event.data);\n\n if (seeked) {\n // Unset seeking and fire seeked event\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n }\n\n // Handle events\n // -1 Unstarted\n // 0 Ended\n // 1 Playing\n // 2 Paused\n // 3 Buffering\n // 5 Video cued\n switch (event.data) {\n case -1:\n // Update scrubber\n triggerEvent.call(player, player.media, 'timeupdate');\n\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n triggerEvent.call(player, player.media, 'progress');\n\n break;\n\n case 0:\n assurePlaybackState.call(player, false);\n\n // YouTube doesn't support loop for a single video, so mimick it.\n if (player.media.loop) {\n // YouTube needs a call to `stopVideo` before playing again\n instance.stopVideo();\n instance.playVideo();\n } else {\n triggerEvent.call(player, player.media, 'ended');\n }\n\n break;\n\n case 1:\n // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)\n if (player.media.paused && !player.embed.hasPlayed) {\n player.media.pause();\n } else {\n assurePlaybackState.call(player, true);\n\n triggerEvent.call(player, player.media, 'playing');\n\n // Poll to get playback progress\n player.timers.playing = setInterval(() => {\n triggerEvent.call(player, player.media, 'timeupdate');\n }, 50);\n\n // Check duration again due to YouTube bug\n // https://github.com/sampotts/plyr/issues/374\n // https://code.google.com/p/gdata-issues/issues/detail?id=8690\n if (player.media.duration !== instance.getDuration()) {\n player.media.duration = instance.getDuration();\n triggerEvent.call(player, player.media, 'durationchange');\n }\n\n // Get quality\n controls.setQualityMenu.call(player, mapQualityUnits(instance.getAvailableQualityLevels()));\n }\n\n break;\n\n case 2:\n // Restore audio (YouTube starts playing on seek if the video hasn't been played yet)\n if (!player.muted) {\n player.embed.unMute();\n }\n assurePlaybackState.call(player, false);\n\n break;\n\n default:\n break;\n }\n\n triggerEvent.call(player, player.elements.container, 'statechange', false, {\n code: event.data,\n });\n },\n },\n });\n },\n};\n\nexport default youtube;\n","// ==========================================================================\n// Plyr Media\n// ==========================================================================\n\nimport html5 from './html5';\nimport vimeo from './plugins/vimeo';\nimport youtube from './plugins/youtube';\nimport { createElement, toggleClass, wrap } from './utils/elements';\n\nconst media = {\n // Setup media\n setup() {\n // If there's no media, bail\n if (!this.media) {\n this.debug.warn('No media element found!');\n return;\n }\n\n // Add type class\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', this.type), true);\n\n // Add provider class\n toggleClass(this.elements.container, this.config.classNames.provider.replace('{0}', this.provider), true);\n\n // Add video class for embeds\n // This will require changes if audio embeds are added\n if (this.isEmbed) {\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', 'video'), true);\n }\n\n // Inject the player wrapper\n if (this.isVideo) {\n // Create the wrapper div\n this.elements.wrapper = createElement('div', {\n class: this.config.classNames.video,\n });\n\n // Wrap the video in a container\n wrap(this.media, this.elements.wrapper);\n\n // Faux poster container\n this.elements.poster = createElement('div', {\n class: this.config.classNames.poster,\n });\n\n this.elements.wrapper.appendChild(this.elements.poster);\n }\n\n if (this.isEmbed) {\n switch (this.provider) {\n case 'youtube':\n youtube.setup.call(this);\n break;\n\n case 'vimeo':\n vimeo.setup.call(this);\n break;\n\n default:\n break;\n }\n } else if (this.isHTML5) {\n html5.extend.call(this);\n }\n },\n};\n\nexport default media;\n","// ==========================================================================\n// Advertisement plugin using Google IMA HTML5 SDK\n// Create an account with our ad partner, vi here:\n// https://www.vi.ai/publisher-video-monetization/\n// ==========================================================================\n\n/* global google */\n\nimport i18n from '../i18n';\nimport { createElement } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport is from './../utils/is';\nimport loadScript from './../utils/loadScript';\nimport { formatTime } from './../utils/time';\nimport { buildUrlParams } from './../utils/urls';\n\nclass Ads {\n /**\n * Ads constructor.\n * @param {object} player\n * @return {Ads}\n */\n constructor(player) {\n this.player = player;\n this.publisherId = player.config.ads.publisherId;\n this.playing = false;\n this.initialized = false;\n this.elements = {\n container: null,\n displayContainer: null,\n };\n this.manager = null;\n this.loader = null;\n this.cuePoints = null;\n this.events = {};\n this.safetyTimer = null;\n this.countdownTimer = null;\n\n // Setup a promise to resolve when the IMA manager is ready\n this.managerPromise = new Promise((resolve, reject) => {\n // The ad is loaded and ready\n this.on('loaded', resolve);\n\n // Ads failed\n this.on('error', reject);\n });\n\n this.load();\n }\n\n get enabled() {\n return this.player.isVideo && this.player.config.ads.enabled && !is.empty(this.publisherId);\n }\n\n /**\n * Load the IMA SDK\n */\n load() {\n if (this.enabled) {\n // Check if the Google IMA3 SDK is loaded or load it ourselves\n if (!is.object(window.google) || !is.object(window.google.ima)) {\n loadScript(this.player.config.urls.googleIMA.sdk)\n .then(() => {\n this.ready();\n })\n .catch(() => {\n // Script failed to load or is blocked\n this.trigger('error', new Error('Google IMA SDK failed to load'));\n });\n } else {\n this.ready();\n }\n }\n }\n\n /**\n * Get the ads instance ready\n */\n ready() {\n // Start ticking our safety timer. If the whole advertisement\n // thing doesn't resolve within our set time; we bail\n this.startSafetyTimer(12000, 'ready()');\n\n // Clear the safety timer\n this.managerPromise.then(() => {\n this.clearSafetyTimer('onAdsManagerLoaded()');\n });\n\n // Set listeners on the Plyr instance\n this.listeners();\n\n // Setup the IMA SDK\n this.setupIMA();\n }\n\n // Build the default tag URL\n get tagUrl() {\n const params = {\n AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n AV_CHANNELID: '5a0458dc28a06145e4519d21',\n AV_URL: location.hostname,\n cb: Date.now(),\n AV_WIDTH: 640,\n AV_HEIGHT: 480,\n AV_CDIM2: this.publisherId,\n };\n\n const base = 'https://go.aniview.com/api/adserver6/vast/';\n\n return `${base}?${buildUrlParams(params)}`;\n }\n\n /**\n * In order for the SDK to display ads for our video, we need to tell it where to put them,\n * so here we define our ad container. This div is set up to render on top of the video player.\n * Using the code below, we tell the SDK to render ads within that div. We also provide a\n * handle to the content video player - the SDK will poll the current time of our player to\n * properly place mid-rolls. After we create the ad display container, we initialize it. On\n * mobile devices, this initialization is done as the result of a user action.\n */\n setupIMA() {\n // Create the container for our advertisements\n this.elements.container = createElement('div', {\n class: this.player.config.classNames.ads,\n });\n this.player.elements.container.appendChild(this.elements.container);\n\n // So we can run VPAID2\n google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED);\n\n // Set language\n google.ima.settings.setLocale(this.player.config.ads.language);\n\n // We assume the adContainer is the video container of the plyr element\n // that will house the ads\n this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container);\n\n // Request video ads to be pre-loaded\n this.requestAds();\n }\n\n /**\n * Request advertisements\n */\n requestAds() {\n const { container } = this.player.elements;\n\n try {\n // Create ads loader\n this.loader = new google.ima.AdsLoader(this.elements.displayContainer);\n\n // Listen and respond to ads loaded and error events\n this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, event => this.onAdsManagerLoaded(event), false);\n this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);\n\n // Request video ads\n const request = new google.ima.AdsRequest();\n request.adTagUrl = this.tagUrl;\n\n // Specify the linear and nonlinear slot sizes. This helps the SDK\n // to select the correct creative if multiple are returned\n request.linearAdSlotWidth = container.offsetWidth;\n request.linearAdSlotHeight = container.offsetHeight;\n request.nonLinearAdSlotWidth = container.offsetWidth;\n request.nonLinearAdSlotHeight = container.offsetHeight;\n\n // We only overlay ads as we only support video.\n request.forceNonLinearFullSlot = false;\n\n // Mute based on current state\n request.setAdWillPlayMuted(!this.player.muted);\n\n this.loader.requestAds(request);\n } catch (e) {\n this.onAdError(e);\n }\n }\n\n /**\n * Update the ad countdown\n * @param {boolean} start\n */\n pollCountdown(start = false) {\n if (!start) {\n clearInterval(this.countdownTimer);\n this.elements.container.removeAttribute('data-badge-text');\n return;\n }\n\n const update = () => {\n const time = formatTime(Math.max(this.manager.getRemainingTime(), 0));\n const label = `${i18n.get('advertisement', this.player.config)} - ${time}`;\n this.elements.container.setAttribute('data-badge-text', label);\n };\n\n this.countdownTimer = setInterval(update, 100);\n }\n\n /**\n * This method is called whenever the ads are ready inside the AdDisplayContainer\n * @param {Event} adsManagerLoadedEvent\n */\n onAdsManagerLoaded(event) {\n // Get the ads manager\n const settings = new google.ima.AdsRenderingSettings();\n\n // Tell the SDK to save and restore content video state on our behalf\n settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n settings.enablePreloading = true;\n\n // The SDK is polling currentTime on the contentPlayback. And needs a duration\n // so it can determine when to start the mid- and post-roll\n this.manager = event.getAdsManager(this.player, settings);\n\n // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n this.cuePoints = this.manager.getCuePoints();\n\n // Add advertisement cue's within the time line if available\n if (!is.empty(this.cuePoints)) {\n this.cuePoints.forEach(cuePoint => {\n if (cuePoint !== 0 && cuePoint !== -1 && cuePoint < this.player.duration) {\n const seekElement = this.player.elements.progress;\n\n if (is.element(seekElement)) {\n const cuePercentage = 100 / this.player.duration * cuePoint;\n const cue = createElement('span', {\n class: this.player.config.classNames.cues,\n });\n\n cue.style.left = `${cuePercentage.toString()}%`;\n seekElement.appendChild(cue);\n }\n }\n });\n }\n\n // Get skippable state\n // TODO: Skip button\n // this.player.debug.warn(this.manager.getAdSkippableState());\n\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n // Add listeners to the required events\n // Advertisement error events\n this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error));\n\n // Advertisement regular events\n Object.keys(google.ima.AdEvent.Type).forEach(type => {\n this.manager.addEventListener(google.ima.AdEvent.Type[type], event => this.onAdEvent(event));\n });\n\n // Resolve our adsManager\n this.trigger('loaded');\n }\n\n /**\n * This is where all the event handling takes place. Retrieve the ad from the event. Some\n * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n * @param {Event} event\n */\n onAdEvent(event) {\n const { container } = this.player.elements;\n\n // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n // don't have ad object associated\n const ad = event.getAd();\n\n // Proxy event\n const dispatchEvent = type => {\n const event = `ads${type.replace(/_/g, '').toLowerCase()}`;\n triggerEvent.call(this.player, this.player.media, event);\n };\n\n switch (event.type) {\n case google.ima.AdEvent.Type.LOADED:\n // This is the first event sent for an ad - it is possible to determine whether the\n // ad is a video ad or an overlay\n this.trigger('loaded');\n\n // Bubble event\n dispatchEvent(event.type);\n\n // Start countdown\n this.pollCountdown(true);\n\n if (!ad.isLinear()) {\n // Position AdDisplayContainer correctly for overlay\n ad.width = container.offsetWidth;\n ad.height = container.offsetHeight;\n }\n\n // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n break;\n\n case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n // All ads for the current videos are done. We can now request new advertisements\n // in case the video is re-played\n\n // Fire event\n dispatchEvent(event.type);\n\n // TODO: Example for what happens when a next video in a playlist would be loaded.\n // So here we load a new video when all ads are done.\n // Then we load new ads within a new adsManager. When the video\n // Is started - after - the ads are loaded, then we get ads.\n // You can also easily test cancelling and reloading by running\n // player.ads.cancel() and player.ads.play from the console I guess.\n // this.player.source = {\n // type: 'video',\n // title: 'View From A Blue Moon',\n // sources: [{\n // src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n // 'video/mp4', }], poster:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n // };\n\n // TODO: So there is still this thing where a video should only be allowed to start\n // playing when the IMA SDK is ready or has failed\n\n this.loadAds();\n break;\n\n case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n // This event indicates the ad has started - the video player can adjust the UI,\n // for example display a pause button and remaining time. Fired when content should\n // be paused. This usually happens right before an ad is about to cover the content\n\n dispatchEvent(event.type);\n\n this.pauseContent();\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n // This event indicates the ad has finished - the video player can perform\n // appropriate UI actions, such as removing the timer for remaining time detection.\n // Fired when content should be resumed. This usually happens when an ad finishes\n // or collapses\n\n dispatchEvent(event.type);\n\n this.pollCountdown();\n\n this.resumeContent();\n\n break;\n\n case google.ima.AdEvent.Type.STARTED:\n case google.ima.AdEvent.Type.MIDPOINT:\n case google.ima.AdEvent.Type.COMPLETE:\n case google.ima.AdEvent.Type.IMPRESSION:\n case google.ima.AdEvent.Type.CLICK:\n dispatchEvent(event.type);\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Any ad error handling comes through here\n * @param {Event} event\n */\n onAdError(event) {\n this.cancel();\n this.player.debug.warn('Ads error', event);\n }\n\n /**\n * Setup hooks for Plyr and window events. This ensures\n * the mid- and post-roll launch at the correct time. And\n * resize the advertisement when the player resizes\n */\n listeners() {\n const { container } = this.player.elements;\n let time;\n\n // Add listeners to the required events\n this.player.on('ended', () => {\n this.loader.contentComplete();\n });\n\n this.player.on('seeking', () => {\n time = this.player.currentTime;\n return time;\n });\n\n this.player.on('seeked', () => {\n const seekedTime = this.player.currentTime;\n\n if (is.empty(this.cuePoints)) {\n return;\n }\n\n this.cuePoints.forEach((cuePoint, index) => {\n if (time < cuePoint && cuePoint < seekedTime) {\n this.manager.discardAdBreak();\n this.cuePoints.splice(index, 1);\n }\n });\n });\n\n // Listen to the resizing of the window. And resize ad accordingly\n // TODO: eventually implement ResizeObserver\n window.addEventListener('resize', () => {\n if (this.manager) {\n this.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n }\n });\n }\n\n /**\n * Initialize the adsManager and start playing advertisements\n */\n play() {\n const { container } = this.player.elements;\n\n if (!this.managerPromise) {\n this.resumeContent();\n }\n\n // Play the requested advertisement whenever the adsManager is ready\n this.managerPromise\n .then(() => {\n // Initialize the container. Must be done via a user action on mobile devices\n this.elements.displayContainer.initialize();\n\n try {\n if (!this.initialized) {\n // Initialize the ads manager. Ad rules playlist will start at this time\n this.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules\n this.manager.start();\n }\n\n this.initialized = true;\n } catch (adError) {\n // An error may be thrown if there was a problem with the\n // VAST response\n this.onAdError(adError);\n }\n })\n .catch(() => {});\n }\n\n /**\n * Resume our video\n */\n resumeContent() {\n // Hide the advertisement container\n this.elements.container.style.zIndex = '';\n\n // Ad is stopped\n this.playing = false;\n\n // Play our video\n if (this.player.currentTime < this.player.duration) {\n this.player.play();\n }\n }\n\n /**\n * Pause our video\n */\n pauseContent() {\n // Show the advertisement container\n this.elements.container.style.zIndex = 3;\n\n // Ad is playing.\n this.playing = true;\n\n // Pause our video.\n this.player.pause();\n }\n\n /**\n * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n * allowed to call new ads based on google policies, as they interpret this as an accidental\n * video requests. https://developers.google.com/interactive-\n * media-ads/docs/sdks/android/faq#8\n */\n cancel() {\n // Pause our video\n if (this.initialized) {\n this.resumeContent();\n }\n\n // Tell our instance that we're done for now\n this.trigger('error');\n\n // Re-create our adsManager\n this.loadAds();\n }\n\n /**\n * Re-create our adsManager\n */\n loadAds() {\n // Tell our adsManager to go bye bye\n this.managerPromise\n .then(() => {\n // Destroy our adsManager\n if (this.manager) {\n this.manager.destroy();\n }\n\n // Re-set our adsManager promises\n this.managerPromise = new Promise(resolve => {\n this.on('loaded', resolve);\n this.player.debug.log(this.manager);\n });\n\n // Now request some new advertisements\n this.requestAds();\n })\n .catch(() => {});\n }\n\n /**\n * Handles callbacks after an ad event was invoked\n * @param {string} event - Event type\n */\n trigger(event, ...args) {\n const handlers = this.events[event];\n\n if (is.array(handlers)) {\n handlers.forEach(handler => {\n if (is.function(handler)) {\n handler.apply(this, args);\n }\n });\n }\n }\n\n /**\n * Add event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n * @return {Ads}\n */\n on(event, callback) {\n if (!is.array(this.events[event])) {\n this.events[event] = [];\n }\n\n this.events[event].push(callback);\n\n return this;\n }\n\n /**\n * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n * The advertisement has 12 seconds to get its things together. We stop this timer when the\n * advertisement is playing, or when a user action is required to start, then we clear the\n * timer on ad ready\n * @param {number} time\n * @param {string} from\n */\n startSafetyTimer(time, from) {\n this.player.debug.log(`Safety timer invoked from: ${from}`);\n\n this.safetyTimer = setTimeout(() => {\n this.cancel();\n this.clearSafetyTimer('startSafetyTimer()');\n }, time);\n }\n\n /**\n * Clear our safety timer(s)\n * @param {string} from\n */\n clearSafetyTimer(from) {\n if (!is.nullOrUndefined(this.safetyTimer)) {\n this.player.debug.log(`Safety timer cleared from: ${from}`);\n\n clearTimeout(this.safetyTimer);\n this.safetyTimer = null;\n }\n }\n}\n\nexport default Ads;\n","// ==========================================================================\n// Plyr source update\n// ==========================================================================\n\nimport { providers } from './config/types';\nimport html5 from './html5';\nimport media from './media';\nimport support from './support';\nimport ui from './ui';\nimport { createElement, insertElement, removeElement } from './utils/elements';\nimport is from './utils/is';\n\nconst source = {\n // Add elements to HTML5 media (source, tracks, etc)\n insertElements(type, attributes) {\n if (is.string(attributes)) {\n insertElement(type, this.media, {\n src: attributes,\n });\n } else if (is.array(attributes)) {\n attributes.forEach(attribute => {\n insertElement(type, this.media, attribute);\n });\n }\n },\n\n // Update source\n // Sources are not checked for support so be careful\n change(input) {\n if (!is.object(input) || !('sources' in input) || !input.sources.length) {\n this.debug.warn('Invalid source format');\n return;\n }\n\n // Cancel current network requests\n html5.cancelRequests.call(this);\n\n // Destroy instance and re-setup\n this.destroy.call(\n this,\n () => {\n // Reset quality options\n this.options.quality = [];\n\n // Remove elements\n removeElement(this.media);\n this.media = null;\n\n // Reset class name\n if (is.element(this.elements.container)) {\n this.elements.container.removeAttribute('class');\n }\n\n // Set the type and provider\n this.type = input.type;\n this.provider = !is.empty(input.sources[0].provider) ? input.sources[0].provider : providers.html5;\n\n // Check for support\n this.supported = support.check(this.type, this.provider, this.config.playsinline);\n\n // Create new markup\n switch (`${this.provider}:${this.type}`) {\n case 'html5:video':\n this.media = createElement('video');\n break;\n\n case 'html5:audio':\n this.media = createElement('audio');\n break;\n\n case 'youtube:video':\n case 'vimeo:video':\n this.media = createElement('div', {\n src: input.sources[0].src,\n });\n break;\n\n default:\n break;\n }\n\n // Inject the new element\n this.elements.container.appendChild(this.media);\n\n // Autoplay the new source?\n if (is.boolean(input.autoplay)) {\n this.config.autoplay = input.autoplay;\n }\n\n // Set attributes for audio and video\n if (this.isHTML5) {\n if (this.config.crossorigin) {\n this.media.setAttribute('crossorigin', '');\n }\n if (this.config.autoplay) {\n this.media.setAttribute('autoplay', '');\n }\n if (!is.empty(input.poster)) {\n this.poster = input.poster;\n }\n if (this.config.loop.active) {\n this.media.setAttribute('loop', '');\n }\n if (this.config.muted) {\n this.media.setAttribute('muted', '');\n }\n if (this.config.playsinline) {\n this.media.setAttribute('playsinline', '');\n }\n }\n\n // Restore class hook\n ui.addStyleHook.call(this);\n\n // Set new sources for html5\n if (this.isHTML5) {\n source.insertElements.call(this, 'source', input.sources);\n }\n\n // Set video title\n this.config.title = input.title;\n\n // Set up from scratch\n media.setup.call(this);\n\n // HTML5 stuff\n if (this.isHTML5) {\n // Setup captions\n if ('tracks' in input) {\n source.insertElements.call(this, 'track', input.tracks);\n }\n\n // Load HTML5 sources\n this.media.load();\n }\n\n // If HTML5 or embed but not fully supported, setupInterface and call ready now\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n // Setup interface\n ui.build.call(this);\n }\n\n // Update the fullscreen support\n this.fullscreen.update();\n },\n true,\n );\n },\n};\n\nexport default source;\n","// ==========================================================================\n// Plyr\n// plyr.js v3.3.12\n// https://github.com/sampotts/plyr\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport captions from './captions';\nimport defaults from './config/defaults';\nimport { getProviderByUrl, providers, types } from './config/types';\nimport Console from './console';\nimport controls from './controls';\nimport Fullscreen from './fullscreen';\nimport Listeners from './listeners';\nimport media from './media';\nimport Ads from './plugins/ads';\nimport source from './source';\nimport Storage from './storage';\nimport support from './support';\nimport ui from './ui';\nimport { closest } from './utils/arrays';\nimport { createElement, hasClass, removeElement, replaceElement, toggleClass, toggleState, wrap } from './utils/elements';\nimport { off, on, once, triggerEvent, unbindListeners } from './utils/events';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { cloneDeep, extend } from './utils/objects';\nimport { parseUrl } from './utils/urls';\n\n// Private properties\n// TODO: Use a WeakMap for private globals\n// const globals = new WeakMap();\n\n// Plyr instance\nclass Plyr {\n constructor(target, options) {\n this.timers = {};\n\n // State\n this.ready = false;\n this.loading = false;\n this.failed = false;\n\n // Touch device\n this.touch = support.touch;\n\n // Set the media element\n this.media = target;\n\n // String selector passed\n if (is.string(this.media)) {\n this.media = document.querySelectorAll(this.media);\n }\n\n // jQuery, NodeList or Array passed, use first element\n if ((window.jQuery && this.media instanceof jQuery) || is.nodeList(this.media) || is.array(this.media)) {\n // eslint-disable-next-line\n this.media = this.media[0];\n }\n\n // Set config\n this.config = extend(\n {},\n defaults,\n Plyr.defaults,\n options || {},\n (() => {\n try {\n return JSON.parse(this.media.getAttribute('data-plyr-config'));\n } catch (e) {\n return {};\n }\n })(),\n );\n\n // Elements cache\n this.elements = {\n container: null,\n buttons: {},\n display: {},\n progress: {},\n inputs: {},\n settings: {\n menu: null,\n panes: {},\n tabs: {},\n },\n captions: null,\n };\n\n // Captions\n this.captions = {\n active: null,\n currentTrack: -1,\n meta: new WeakMap(),\n };\n\n // Fullscreen\n this.fullscreen = {\n active: false,\n };\n\n // Options\n this.options = {\n speed: [],\n quality: [],\n };\n\n // Debugging\n // TODO: move to globals\n this.debug = new Console(this.config.debug);\n\n // Log config options and support\n this.debug.log('Config', this.config);\n this.debug.log('Support', support);\n\n // We need an element to setup\n if (is.nullOrUndefined(this.media) || !is.element(this.media)) {\n this.debug.error('Setup failed: no suitable element passed');\n return;\n }\n\n // Bail if the element is initialized\n if (this.media.plyr) {\n this.debug.warn('Target already setup');\n return;\n }\n\n // Bail if not enabled\n if (!this.config.enabled) {\n this.debug.error('Setup failed: disabled by config');\n return;\n }\n\n // Bail if disabled or no basic support\n // You may want to disable certain UAs etc\n if (!support.check().api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n // Cache original element state for .destroy()\n const clone = this.media.cloneNode(true);\n clone.autoplay = false;\n this.elements.original = clone;\n\n // Set media type based on tag or data attribute\n // Supported: video, audio, vimeo, youtube\n const type = this.media.tagName.toLowerCase();\n\n // Embed properties\n let iframe = null;\n let url = null;\n\n // Different setup based on type\n switch (type) {\n case 'div':\n // Find the frame\n iframe = this.media.querySelector('iframe');\n\n // <iframe> type\n if (is.element(iframe)) {\n // Detect provider\n url = parseUrl(iframe.getAttribute('src'));\n this.provider = getProviderByUrl(url.toString());\n\n // Rework elements\n this.elements.container = this.media;\n this.media = iframe;\n\n // Reset classname\n this.elements.container.className = '';\n\n // Get attributes from URL and set config\n if (url.searchParams.length) {\n const truthy = [\n '1',\n 'true',\n ];\n\n if (truthy.includes(url.searchParams.get('autoplay'))) {\n this.config.autoplay = true;\n }\n if (truthy.includes(url.searchParams.get('loop'))) {\n this.config.loop.active = true;\n }\n\n // TODO: replace fullscreen.iosNative with this playsinline config option\n // YouTube requires the playsinline in the URL\n if (this.isYouTube) {\n this.config.playsinline = truthy.includes(url.searchParams.get('playsinline'));\n } else {\n this.config.playsinline = true;\n }\n }\n } else {\n // <div> 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')) {\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');\n wrap(this.media, this.elements.container);\n }\n\n // Allow focus to be captured\n this.elements.container.setAttribute('tabindex', 0);\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 this.ads = new Ads(this);\n\n // Autoplay if required\n if (this.config.autoplay) {\n this.play();\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 get isEmbed() {\n return Boolean(this.isYouTube || this.isVimeo);\n }\n get isYouTube() {\n return Boolean(this.provider === providers.youtube);\n }\n get isVimeo() {\n return Boolean(this.provider === providers.vimeo);\n }\n get isVideo() {\n return Boolean(this.type === types.video);\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 before the media has loaded\n const duration = (this.media || {}).duration || 0;\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 : 1);\n }\n\n /**\n * Decrease volume\n * @param {boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume - (is.number(step) ? step : 1);\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 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\n // Trigger request event\n triggerEvent.call(this, this.media, 'qualityrequested', false, { quality });\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\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 * 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);\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 // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n // If the method is called without parameter, toggle based on current value\n const active = is.boolean(input) ? input : !this.elements.container.classList.contains(this.config.classNames.captions.active);\n\n // Toggle state\n toggleState(this.elements.buttons.captions, active);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.captions.active, active);\n\n // Update state and trigger event\n if (active !== this.captions.active) {\n this.captions.active = active;\n triggerEvent.call(this, this.media, this.captions.active ? 'captionsenabled' : 'captionsdisabled');\n }\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);\n }\n\n /**\n * Get the current caption track index (-1 if disabled)\n */\n get currentTrack() {\n const { active, currentTrack } = this.captions;\n return active ? 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);\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 const states = {\n pip: 'picture-in-picture',\n inline: 'inline',\n };\n\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 === states.inline;\n\n // Toggle based on current state\n this.media.webkitSetPresentationMode(toggle ? states.pip : states.inline);\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 return this.media.webkitPresentationMode;\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 // Trigger event on change\n if (hiding !== isHidden) {\n const eventName = hiding ? 'controlshidden' : 'controlsshown';\n triggerEvent.call(this, this.media, eventName);\n }\n return !hiding;\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 * 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(this.elements.container, event, callback);\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 // Type specific stuff\n switch (`${this.provider}:${this.type}`) {\n case 'html5:video':\n case 'html5:audio':\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\n break;\n\n case 'youtube:video':\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\n break;\n\n case 'vimeo:video':\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 break;\n\n default:\n break;\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","// ==========================================================================\n// Plyr Polyfilled Build\n// plyr.js v3.3.12\n// https://github.com/sampotts/plyr\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport 'babel-polyfill';\nimport 'custom-event-polyfill';\nimport 'url-polyfill';\nimport Plyr from './plyr';\n\nexport default Plyr;\n"]} \ No newline at end of file