commit 07d23b59713a72717dd01929863281dfb0d01733 Author: Nulo Date: Mon Oct 11 17:25:55 2021 -0300 Todas las cosas diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/0.0c5b2e6a.chunk.js.map b/0.0c5b2e6a.chunk.js.map new file mode 100644 index 0000000..2547476 --- /dev/null +++ b/0.0c5b2e6a.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../node_modules/global/window.js","../node_modules/@videojs/vhs-utils/es/mp4-helpers.js","../node_modules/@videojs/vhs-utils/es/resolve-url.js","../node_modules/@videojs/vhs-utils/es/stream.js","../node_modules/m3u8-parser/dist/m3u8-parser.es.js","../node_modules/@videojs/vhs-utils/es/codecs.js","../node_modules/@videojs/vhs-utils/es/media-types.js","../node_modules/mpd-parser/dist/mpd-parser.es.js","../node_modules/@videojs/vhs-utils/es/byte-helpers.js","../node_modules/@videojs/vhs-utils/es/id3-helpers.js","../node_modules/@videojs/vhs-utils/es/opus-helpers.js","../node_modules/@videojs/vhs-utils/es/ebml-helpers.js","../node_modules/@videojs/vhs-utils/es/nal-helpers.js","../node_modules/@videojs/vhs-utils/es/containers.js","../node_modules/video.js/dist/video.es.js","../node_modules/global/document.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","../node_modules/xmldom/lib/dom.js","../node_modules/safe-json-parse/tuple.js","../node_modules/keycode/index.js","../node_modules/@videojs/xhr/index.js","../node_modules/is-function/index.js","../node_modules/videojs-vtt.js/lib/browser-index.js","../node_modules/videojs-vtt.js/lib/vtt.js","../node_modules/videojs-vtt.js/lib/vttcue.js","../node_modules/videojs-vtt.js/lib/vttregion.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/url-toolkit/src/url-toolkit.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/xmldom/lib/dom-parser.js","../node_modules/xmldom/lib/entities.js","../node_modules/xmldom/lib/sax.js","../node_modules/mux.js/lib/tools/parse-sidx.js","../node_modules/mux.js/lib/utils/clock.js"],"names":["win","window","global","self","module","exports","DESCRIPTORS","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","test","location","href","nativeURL","URL","protocolLess","removeLocation","URLToolkit","buildAbsoluteURL","newUrl","slice","length","protocol","Stream","this","listeners","_proto","prototype","on","type","listener","push","off","index","indexOf","splice","trigger","callbacks","arguments","i","call","args","Array","_length","_i","apply","dispose","pipe","destination","data","LineStream","_Stream","_this","buffer","_inheritsLoose","nextNewline","substring","TAB","String","fromCharCode","parseByterange","byterangeString","match","exec","result","parseInt","offset","parseAttributes","attributes","attr","attrs","split","RegExp","replace","ParseStream","customParsers","tagMappers","line","event","_this2","trim","reduce","acc","mapper","mappedLine","concat","forEach","newLine","tagType","duration","parseFloat","title","version","number","playlistType","_extends","allowed","URI","uri","BYTERANGE","byterange","RESOLUTION","resolution","width","height","BANDWIDTH","dateTimeString","dateTimeObject","Date","IV","toLowerCase","Uint32Array","PRECISE","hasOwnProperty","key","subkey","text","addParser","_ref","_this3","expression","customType","dataParser","segment","addTagMapper","_ref2","map","camelCaseKeys","Object","keys","str","a","toUpperCase","setHoldBack","manifest","serverControl","targetDuration","partTargetDuration","tag","hb","phb","minTargetDuration","minPartDuration","message","Parser","lineStream","parseStream","currentMap","_key","_assertThisInitialized","uris","currentUri","hasParts","noop","defaultMediaGroups","currentTimeline","allowCache","discontinuityStarts","segments","lastByterangeEnd","lastPartByterangeEnd","parts","preloadHints","timeline","preloadSegment","entry","mediaGroup","rendition","endlist","endList","inf","mediaSequence","discontinuitySequence","METHOD","KEYFORMAT","contentProtection","KEYID","schemeIdUri","keyId","pssh","decodeB64ToUint8Array","method","iv","isFinite","playlist","playlists","mediaGroups","media","TYPE","NAME","mediaGroupType","default","DEFAULT","autoselect","AUTOSELECT","LANGUAGE","language","instreamId","CHARACTERISTICS","characteristics","FORCED","forced","discontinuity","targetduration","start","isNaN","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","part","partIndex","renditionReports","r","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","comment","custom","identifier","missing","join","chunk","end","options","regexs","mp4","webm","ogg","video","audio","muxerVideo","muxerAudio","muxerText","mediaTypes","upperMediaTypes","translateLegacyCodec","codec","orig","profile","avcLevel","Number","toString","parseCodecs","codecString","codecs","codecType","name","details","mediaType","isAudioCodec","getMimeForCodec","c","container","every","browserSupportsCodec","MediaSource","isTypeSupported","muxerSupportsCodec","DEFAULT_AUDIO_CODEC","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","isObject","obj","merge","_len","objects","source","isArray","flatten","lists","x","y","from","list","errors","urlTypeToSegment","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","resolvedUri","ranges","startRange","endRange","parseEndNumber","endNumber","segmentRange","static","_attributes$timescale","timescale","sourceDuration","Math","ceil","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$start","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","Infinity","now","periodStartWC","periodDuration","segmentCount","availableStart","floor","availableEnd","max","min","parseByDuration","_attributes$type","_attributes$timescale4","_segmentRange$type","_attributes$timescale3","periodIndex","_attributes$startNumb","startNumber","time","toSegments","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","Error","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist","sidx","sidxByteRange","sidxEnd","mediaReferences","references","filter","referenceType","startIndex","firstOffset","reference","size","referencedSize","subsegmentDuration","generateSidxKey","byteRangeToString","mergeDiscontiguousPlaylists","o","_acc$name$segments","id","lang","k","l","e","addSidxSegmentsToPlaylist$1","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatVideoPlaylist","_ref3","_attributes2","AUDIO","SUBTITLES","CODECS","bandwidth","videoOnly","_ref4","mimeType","contentType","audioOnly","_ref5","vttOnly","_ref6","toM3u8","dashPlaylists","locations","_mediaGroups","_dashPlaylists$0$attr","_dashPlaylists$0$attr2","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","captionServices","Boolean","master","VIDEO","isAudioOnly","mainPlaylist","formattedPlaylists","role","value","label","roleLabel","formatted","_attributes","formatAudioPlaylist","organizeAudioPlaylists","subs","_m3u8Attributes","m3u8Attributes","formatVttPlaylist","organizeVttPlaylists","cc","svcObj","svc","service","channel","aspectRatio","easyReader","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","sIndex","S","d","repeat","segmentTime","t","count","nextS","identifierPattern","constructTemplateUrl","url","values","format","identifierReplacement","segmentsFromTemplate","templateValues","RepresentationID","Bandwidth","mapSegment","parseTemplateInfo","Time","presentationTimeOffset","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","segmentUrl","mediaRange","SegmentURLToSegmentObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","findChildren","element","childNodes","tagName","getContent","textContent","parseDuration","_match$slice","year","month","day","hour","minute","second","parsers","mediaPresentationDuration","parse","parsedValue","el","parseFn","keySystemsMap","buildBaseUrls","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","s","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","adaptationSetAttributes","adaptationSetBaseUrls","roleAttributes","accessibility","_value$split","flags","undefined","_value$split2","_value$split2$","opts","opt","_opt$split","val","labelVal","nodeValue","node","keySystem","psshNode","psshBuffer","representations","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","inheritBaseUrls","toAdaptationSets","mpdAttributes","mpdBaseUrls","period","periodAtt","parsedPeriodId","adaptationSets","stringToMpdXml","manifestString","xml","mpd","parser","DOMParser","parseFromString","documentElement","getElementsByTagName","parsedManifestInfo","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periods","representationInfo","inheritAttributes","parseUTCTiming","UTCTimingNode","parseUTCTimingScheme","toUint8","bytes","Uint8Array","ArrayBuffer","isView","byteOffset","byteLength","BigInt","BYTE_TABLE","bytesToNumber","Uint16Array","b","_temp","_ref$signed","signed","_ref$le","le","fn","total","byte","exponent","abs","numberToBytes","_temp2","_ref2$le","byteCount","countBits","byteIndex","bytesToString","string","decodeURIComponent","escape","stringToBytes","stringIsBytes","unescape","encodeURIComponent","view","charCodeAt","bytesMatch","_temp3","_ref3$offset","_ref3$mask","mask","bByte","ID3","getId3Offset","returnSize","getId3Size","normalizePath","path","parseDescriptors","results","headerSize","z","_DESCRIPTORS$z","subarray","desc","dependsOnEsId","ocrEsId","descriptors","len","oti","streamType","bufferSize","maxBitrate","avgBitrate","findBox","paths","complete","p","normalizePaths","EBML_TAGS","EBML","DocType","Segment","SegmentInfo","Tracks","Track","TrackNumber","DefaultDuration","TrackEntry","TrackType","FlagDefault","CodecID","CodecPrivate","VideoTrack","AudioTrack","Cluster","Timestamp","TimestampScale","BlockGroup","BlockDuration","Block","SimpleBlock","LENGTH_TABLE","getvint","removeLength","getLength","valueBytes","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","discardEmulationPreventionBytes","positions","newLength","newData","sourceIndex","shift","findNal","dataType","types","nalLimit","nalStart","nalsFound","nalOffset","nalType","CONSTANTS","_isLikely","aac","mp3","docType","mkv","matroska","mov","fmp4","ac3","ts","flac","avi","riff","wav","findH264Nal","findH265Nal","isLikelyTypes","isLikelyFn","browserApi","isLikely","detectContainerForBytes","version$5","FullscreenApi","prefixed","apiMap","specApi","document","history","log$1","createLogger$1","logByType","level","log","lvl","levels","lvlRegExp","unshift","console","info","LogByTypeFactory","createLogger","subname","all","debug","warn","error","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","object","each","assign","target","sources","isPlain","constructor","computedStyle","prop","getComputedStyle","computedStyleValue","getPropertyValue","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","pop","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_WINDOWS","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","freeze","__proto__","isNonBlankString","throwIfWhitespace","isEl","nodeType","isInFrame","parent","createQuerier","selector","context","querySelector","ctx","createEl","properties","content","createElement","getOwnPropertyNames","propName","setAttribute","attrName","appendContent","innerText","prependTo","child","firstChild","insertBefore","appendChild","hasClass","classToCheck","classList","contains","className","addClass","classToAdd","add","removeClass","classToRemove","remove","toggleClass","classToToggle","predicate","has","setAttributes","attrValue","removeAttribute","getAttributes","knownBooleans","attrVal","getAttribute","attribute","blockTextSelection","body","focus","onselectstart","unblockTextSelection","getBoundingClientRect","parentNode","rect","findPosition","offsetParent","left","top","offsetWidth","offsetHeight","fullscreenElement","offsetLeft","offsetTop","getPointerPosition","translated","item","nodeName","transform","_values","position","boxTarget","box","boxW","boxH","offsetY","offsetX","changedTouches","pageX","pageY","isTextNode","emptyEl","removeChild","normalizeContent","createTextNode","insertContent","isSingleLeftClick","button","buttons","videojs$1","$","$$","Dom","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setTimeout","setWindowLoaded","removeEventListener","readyState","addEventListener","FakeWeakMap","createStyleElement","style","setTextContent","styleSheet","cssText","_guid","newGUID","WeakMap","vdata","performance","set","access","get","_supportsPassive","DomData","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","callback","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","old","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","scrollLeft","clientLeft","clientY","scrollTop","clientTop","which","charCode","keyCode","passiveEvents","guid","hash","handlersCopy","m","n","defineProperty","supportsPassive","passive","attachEvent","removeType","elemData","ownerDocument","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","bind","uid","bound","throttle","last","EventTarget$2","allowedEvents_","ael","dispatchEvent","queueTrigger","Map","oldTimeout","clearTimeout","timeout","objName","name_","isEvented","eventBusEl_","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","wrapper","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","eventedCallbacks","StatefulMixin","state","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","mergeOptions$3","MapSham","map_","thisArg","Map$1","SetSham","set_","Set","Component$1","Component","ready","play","player_","isDisposed_","parentComponent_","options_","id_","el_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","isDisposed","localize","tokens","defaultValue","code","languages","primaryCode","primaryLang","localizedString","ret","contentEl","contentEl_","children","getChildById","getChild","getDescendant","names","currentChild","addChild","component","componentName","componentClassName","componentClass","ComponentClass","getComponent","refNode","childFound","compEl","workingChildren","parentOptions","Tech","some","wchild","isTech","playerOptions","newChild","buildCSSClass","sync","isReady_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","num","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","touches","xdiff","ydiff","sqrt","noTap","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","supportsRaf_","requestNamedAnimationFrame","_this4","cancelNamedAnimationFrame","cancelAnimationFrame","_this5","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","getRange","valueIndex","rangeIndex","maxIndex","rangeCheck","createTimeRangesObj","createTimeRanges","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","status","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","track","cues","cue","startTime","endTime","textTrackConverter","tech","trackEls","trackObjs","trackEl","json","src","textTracks","addedTrack","addRemoteTextTrack","addCue","ModalDialog","_Component","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","MODAL_CLASS_NAME","descEl_","description","tabIndex","previouslyActiveEl_","open","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","nextSibling","empty","closeButton","content_","activeEl","activeElement","playerEl","keycode","isEventKey","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","hasAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks","tracks_","addTrack","labelchange_","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","labelchange","disableOthers$1","enabled","AudioTrackList","_TrackList","changing_","enabledChange_","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","trackProps","_loop","newLabel","parseUrl","props","div","addToBody","host","innerHTML","getAbsoluteURL","getFileExtension","pathParts","isCrossOrigin","winLoc","urlInfo","Url","parseCues","srcContent","WebVTT","vttjs","StringDecoder","oncue","onparsingerror","onflush","groupCollapsed","groupEnd","flush","loadTrack","crossOrigin","cors","withCredentials","tech_","XHR","err","response","responseBody","loaded_","TextTrack","_Track","settings","srclang","mode","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","defineProperties","newMode","ct","currentTime","active","originalCue","VTTCue","originalCue_","removeCue","_removeCue","cuechange","newEnabled","newSelected","HTMLTrackElement","load","NONE","LOADING","LOADED","ERROR","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","manualProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","setCrossOrigin","error_","played","setScrubbing","scrubbing","setCurrentTime","trackListChanges","addWebVttScript_","vtt","script","onload","onerror","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createTrackHelper","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","disablePictureInPicture","setDisablePictureInPicture","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","next","setSourceHelper","mediate","middleware","arg","callMethod","middlewareValue","middlewareIterator","terminated","mws","mw","executeRight","allowedGetters","muted","seekable","volume","allowedSetters","setMuted","setVolume","allowedMediators","lastRun","_middleware","mwFactory","mwrest","_mws$i","mwf","mwi","getOrCreateFactory","_src","MimetypesKind","opus","ogv","m4v","m4a","caf","oga","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","filterSource","newsrc","srcobj","fixSource","mimetype","MediaLoader","j","techOrder","techName","isSupported","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","enabled_","clickHandler","PosterImage","_ClickableComponent","update","update_","poster","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","trackList","userPref","cache_","selectedLanguage","clearDisplay","processCues","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","dir","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","cb","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","h","gm","gh","implementation","formatTime","TimeDisplay","updateContent","updateTextNode_","labelText_","textNode_","formattedTime_","oldNode","replaceChild","CurrentTimeDisplay","_TimeDisplay","ended","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","vertical","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","isLive","seekableEnd","bufferedEnd","percent","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","right","pullTooltipBy","round","write","updateTime","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","SeekBar","_Slider","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","userSeek_","nextSeekedFromUser","seekableStart","videoWasPlaying","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","codes","STEP_SECONDS","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","pictureInPictureEnabled","isInPictureInPicture","exitPictureInPicture","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","updateVolume","MouseVolumeLevelDisplay","bottom","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","checkVolumeSupport","throttledHandleMouseMove","orientationClass","MuteToggle","checkMuteSupport","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","VolumePanel","inline","volumeControl","handleKeyPressHandler_","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","addEventListenerForItem","removeEventListenerForItem","addItem","childComponent","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","items","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","TrackButton","_MenuButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","track_","setTrack","findChaptersTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","LOCAL_STORAGE_KEY$1","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","v","parseOptionValue","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","config","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","initial","accum","selectedIndex","setValues","setSelectedOption","JSON","localStorage","getItem","setItem","stringify","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","immediate","debounced","_later","cancel","debounce","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","handleVisibilityChange_","handleVisibilityChange","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","stopTracking","startTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","sort","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","cloneNode","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","enumerable","configurable","firstSourceWatch","resetSourceWatch_","innerDescriptor","HTMLMediaElement","getInnerHTMLDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","setupSourceset","resetSourceset_","srcDescriptor","getSrcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","getValue","setter","writable","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","hasChildNodes","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","proxyNativeTracksForType_","elTracks","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","charAt","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","isFullscreen_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","tagAttributes","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","autoplay","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","ratio","aspectRatio_","idClass","ratioParts","videoWidth","videoHeight","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","promise","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","matchingSources","findMimetype","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","_this8","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userActions","doubleClick","userWasActive","cancelable","toggleFullscreenClass_","targetPlayer","isFs","matches","fullscreen","msMatchesSelector","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","reduceRight","_this9","resolve","play_","_this10","isSrcReady","waitToPlay_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","errorHandler","requestFullscreenHelper_","fsOptions","_this11","preferFullWindow","enterFullWindow","exitFullscreenHelper_","_this12","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","isContentEditable","excludeElement","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","_this13","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","finder","sourceOrder","handleSrc_","isRetry","_this14","resetRetryOnError_","middlewareSource","src_","notSupportedMessage","setTech","retryOnError","retry","stopListeningForErrors","str1","str2","_this15","sourceTech","_this16","doReset_","resetControlBarUI_","resetProgressBar_","resetPlaybackRate_","resetVolumeBar_","_this$controlBar","durationDisplay","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","handleMouseUpAndMouseLeave","screenX","screenY","isAudio_","toJSON","createModal","_this17","modal","currentBreakpoint","candidateBreakpoint","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this18","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","safeParseTuple","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createPluginFactory","PluginSubClass","plugin","instance","_construct","getEventHash","Plugin","VERSION","isBasic","registerPlugin","basicPluginWrapper","createBasicPlugin","deregisterPlugin","getPlugins","getPluginVersion","hasPlugin","normalizeId","getPlayer","TypeError","defaultView","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","use","writeable","extend","superClass","subClassMethods","subClass","methods","_inherits","super_","mergeOptions","addLanguage","_mergeOptions","createTimeRange","setFormatTime","customImplementation","resetFormatTime","EventTarget","xhr","dom","_resolveUrl","resolveManifestRedirect","handleManifestRedirect","req","responseURL","logger","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","findRange","findNextRange","printableRange","strArr","timeRangesToArray","timeRangesList","lastBufferedEnd","getPartsAndSegments","si","pi","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","partHoldBack","holdBack","intervalDuration","endSequence","expired","backward","backwardDuration","forward","forwardDuration","totalDuration","sumDurations","defaultDuration","durationList","endIndex","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentTime","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","_ret","Playlist","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","partsAndSegments","partAndSegment","_partAndSegment","_i3","_i4","_partAndSegment2","isDisabled","isAes","estimateSegmentRequestTime","segmentDuration","bytesReceived","createPlaylistID","forEachMediaGroup","groupKey","labelKey","mediaProperties","setupMediaPlaylist","playlistErrors_","addPropertiesToMaster","phonyUri","groupId","setupMediaPlaylists","resolveMediaGroupUris","mergeOptions$2","EventTarget$1","updateSegment","skipped","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMaster$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","oldSegments","newSegments","newIndex","oldSegment","newSegment","updateSegments","refreshDelay","lastPart","lastDuration","PlaylistLoader","vhs","logger_","_options$withCredenti","_options$handleManife","handleManifestRedirects","vhs_","vhsOptions","customTagParsers","customTagMappers","experimentalLLHLS","handleMediaupdatetimeout_","query","nextMSN","nextPart","canSkipUntil","addLLHLSQueryDirectives","playlistRequestError","haveMetadata","playlistString","responseText","startingState","parseManifest_","onwarn","oninfo","_ref$customTagParsers","_ref$customTagMappers","customParser","parseManifest","playlistObject","lastRequest","media_","mediaUpdateTimeout","stopRequest","finalRenditionTimeout","oldRequest","onreadystatechange","abort","shouldDelay","delay","mediaChange","masterPlaylistRef","started","setupInitialPlaylist","srcUri","masterForMedia","videojsXHR","mergeOptions$1","callbackWrapper","reqResponse","responseType","responseTime","roundTripTime","requestTime","headers","responseHeaders","timedout","aborted","statusCode","xhrFactory","XhrFunction","beforeRequest","Vhs","newOptions","originalAbort","segmentXhrHeaders","Range","byterangeEnd","byterangeStr","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","segmentKeyId","hexDump","step","utils","tagDump","textRanges","getProgramTime","_ref$time","matchedSegment","segmentEnd","videoTimingInfo","transmuxedPresentationEnd","estimatedStart","transmuxedPresentationStart","findSegmentForPlayerTime","seekTime","programTimeObject","mediaSeconds","programTime","playerTime","transmuxerPrependedSeconds","offsetFromSegmentStart","getTime","playerTimeToProgramTime","programDateTime","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","verifyProgramDateTimeTags","lastSegmentStart","lastSegmentDuration","findSegmentForProgramTime","mediaOffset","comparisonTimeStamp","segmentDateTime","segmentTimeEpoch","getOffsetFromTimestamp","seekToTime","callbackOnCompleted","containerRequest","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","buffers","totalLen","buf","tempBuffer","concatTypedArrays","beforeSend","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","masterPlaylistLoader_","isMaster_","refreshXml_","refreshMedia_","loadedPlaylists_","srcUrl","sidxMapping_","childPlaylist_","requestErrored_","addSidxSegments_","fin","parseSidx","internal","blacklistDuration","_playlist$sidx$bytera","mediaRequest_","minimumUpdatePeriodTimeout_","createMupOnMedia_","hasPendingRequest","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMaster_","masterChanged","haveMaster_","masterXml_","date","masterLoaded_","handleMaster_","syncClientServerClock_","done","utcTiming","clientOffset_","serverTime","newMaster","masterXml","parseMasterXml","oldMaster","noChanges","playlistUpdate","group","_playlistUpdate","updateMaster","mpl","mup","createMUPTimeout_","mediaGroupSidx","filterChangedSidxMappings","mediaID","mediaChanged","createMediaUpdateTimeout","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","browserWorkerPolyFill","workerObj","factory","objectUrl","createObjectURL","Blob","blob","BlobBuilder","getBlob","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","TransmuxWorker","init","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","stream","UINT32_MAX","pow","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","payload","DataView","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","boxes","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","mp4Generator","fileType","movie","sampleForFrame","frame","dataOffset","pts","dts","keyFrame","frameUtils","nalUnits","currentNal","currentFrame","frames","nalCount","nalUnitType","currentGop","gops","baseDataOffset","nalsByteLength","numberOfNals","highPrefix","lowPrefix","zeroFill","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","metaTable","arr","ONE_SECOND_IN_TS$4","timestamp","sampleRate","timelineStartPts","keepOriginalTimestamps","clock","audioFrameUtils","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","frameDuration","silentFrame","firstFrame","audioGapDuration","audioFillFrameCount","audioFillDuration","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","array","sum","sumFrameByteLengths","ONE_SECOND_IN_TS$3","trackDecodeInfo","maxSegmentDts","maxSegmentPts","timelineStartInfo","captionPacketParser","payloadType","payloadSize","sei","userData","ccData","emulationPreventionBytesPositions","CaptionStream$1","CaptionStream","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","idx","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","within708TextBlock","Cea708Window","windowNum","clearText","pendingNewLine","winAttr","penAttr","penLoc","penColor","visible","rowLock","columnLock","relativePositioning","anchorVertical","anchorHorizontal","anchorPoint","rowCount","virtualRowCount","columnCount","windowStyle","penStyle","getText","rows","rowIdx","beforeRowOverflow","isEmpty","addText","backspace","row","substr","Cea708Service","serviceNum","currentWindow","windows","startPts","setCurrentWindow","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","initService","handleText","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","getPts","flushDisplayed","isExtended","_char","newCode","get708CharFromCode","fillOpacity","fillRed","fillGreen","fillBlue","borderType","borderRed","borderGreen","borderBlue","wordWrap","printDirection","scrollDirection","justify","effectSpeed","effectDirection","displayEffect","displayedText","winId","endPts","pushCaption","textTag","penSize","italics","underline","edgeType","fontStyle","fgOpacity","fgRed","fgGreen","fgBlue","bgOpacity","bgRed","bgGreen","bgBlue","edgeRed","edgeGreen","edgeBlue","column","CHARACTER_TRANSLATION","getCharFromCode","ROWS","createDisplayBuffer","BOTTOM_ROW","field","dataChannel","field_","dataChannel_","setConstants","swap","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","isColorPAC","isNormalChar","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","_char2","newBaseRow","reverse","popOn","baseRow","rollUp","paintOn","captionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","TYPE_SHARED","handleRollover$1","direction","TimestampRolloverStream$1","TimestampRolloverStream","lastDTS","referenceDTS","type_","_MetadataStream","timestampRolloverStream","percentEncode$1","parseUtf8","parseSyncSafeInteger$1","tagParsers","TXXX","WXXX","PRIV","owner","privateData","tagSize","dispatchType","frameStart","frameSize","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","MP2T_PACKET_LENGTH$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","psi","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","tableEnd","pid","processPes_","STREAM_TYPES","h264","adts","timedMetadata","forceFlush","packetFlushable","fragment","trackId","pes","ptsDtsFlags","startPrefix","packetLength","parsePes","flushStreams_","m2ts","PAT_PID","MP2T_PACKET_LENGTH","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","frameLength","protectionSkipBytes","frameEnd","oldBuffer","sampleCount","adtsFrameDuration","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","getUint32","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","expGolombDecoder","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","sarScale","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","parseSyncSafeInteger","isLikelyAacData","parseAdtsSize","lowThree","middle","parseType","parseSampleRate","parseAacTimestamp","percentEncode","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","audioProperties","videoProperties","ONE_SECOND_IN_TS$1","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","nearestDistance","alignIndex","gopIndex","align","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","output","audioTrack","caption","id3","captionStreams","cueTime","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","pipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","getTracks","getTimescaleFromMediaHeader","transmuxer","Transmuxer","VideoSegmentStream","AudioSegmentStream","AUDIO_PROPERTIES","VIDEO_PROPERTIES","bin","parseType_1","toUnsigned$2","findBox_1","subresults","toUnsigned$1","parseTfdt","parseSampleFlags_1","parseTrun","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTfhd","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","mapToSample","approximateOffset","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","seiNals","headerInfo","truns","avcStream","seiNal","lastMatchedSample","avcView","matchingSample","findSeiNals","allSamples","parseSamples","captionParser","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","parseEmbeddedCaptions","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","toUnsigned","toHexString","baseTimes","scale","baseTime","traks","tkhdVersion","getUint8","sampleDescriptions","codecConfig","codecBox","probe$2","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","parseNalUnitType","probe$1","pusi","payloadOffset","parsePesType","parsePesTime","videoPacketContainsKeyFrame","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","handleRollover","probe","ONE_SECOND_IN_TS","SYNC_BYTE","parseAudioPes_","pesType","parsed","endLoop","table","parseVideoPes_","firstKeyFrame","inspectTs_","parsePsi_","tsInspector","baseTimestamp","audioCount","audioTimescale","inspectAac_","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","adjustTimestamp_","MessageHandlers","initArray","typedArray","postMessage","action","gopInfo","timingInfo","videoSegmentTimingInfo","decode","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","wireTransmuxerEvents","pushMp4Captions","trackIds","probeMp4StartTime","probeMp4Tracks","probeTs","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","clearAllMp4Captions","clearParsedMp4Captions","setTimestampOffset","timestampOffset","appendStart","onmessage","messageHandlers","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","isEndOfTimeline","transmuxedData","waitForEndedTimelineEvent","currentTransmux","_event$data$segment","videoFrameDtsTime","videoFramePtsTime","handleData_","handleGopInfo_","handleDone_","dequeue","transmuxQueue","processAction","enqueueAction","transmux","segmentTransmuxer","term","workerCallback","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","abortAll","activeXhrs","handleErrors","handleKeyResponse","finishProcessingFn","errorObj","parseInitSegment","_callback","handleSegmentResponse","newBytes","stringToArrayBuffer","lastReachedChar","stats","getRequestStats","encryptedBytes","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","probeResult","id3Frames","handleSegmentBytes","bytesAsUint8Array","isLikelyFmp4MediaSegment","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","_ref7","keyBytes","decryptionWorker","decryptionHandler","decrypted","encrypted","waitForCompletion","_ref9","didError","segmentFinish","_ref8","requestId","decryptedBytes","decryptSegment","endOfAllRequests","parseError","handleProgress","_ref11","progressFn","progressEvent","getProgressStats","firstBytesReceivedAt","mediaSegmentRequest","_ref12","xhrOptions","abortFn","keyXhr","mapKeyXhr","initSegmentXhr","handleInitSegmentResponse","segmentRequestOptions","segmentXhr","loadendState","activeXhr","_ref10","calledAbortFn","handleLoadEnd","logFn$1","isMaat","mediaAttributes","unwrapCodecList","codecList","codecCount","codecObj","codecsForPlaylist","codecInfo","getCodecs","audioGroup","defaultCodecs","audioGroupId","audioType","codecsFromDefault","logFn","representationToString","safeGetComputedStyle","property","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","simpleSelector","playerBandwidth","playerWidth","playerHeight","limitRenditionByPlayerDimensions","masterPlaylistController","getAudioTrackPlaylists_","sortedPlaylistReps","enabledPlaylistReps","rep","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","resolutionBestRep","chosenRep","_type","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","masterPlaylistController_","addMetadata","inbandTextTracks","metadataArray","videoDuration","Cue","WebKitDataCue","metadataTrack","metadataTrack_","deprecateOldCue","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","removeCuesFromTrack","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","segmentInfoString","startOfSegment","_segmentInfo$playlist","_segmentInfo$playlist2","mediaIndex","segmentLen","selection","isSyncRequest","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","shouldWaitForTimelineChange","timelineChangeController","loaderType","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","segmentTooLong","maxDuration","getTroublesomeSegmentDurationMessage","sourceType","audioDuration","mediaDuration","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","SegmentLoader","_videojs$EventTarget","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","loaderType_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","timelineChangeController_","shouldSaveSegmentTimingInfo_","checkBufferTimeout_","currentTimeline_","pendingSegment_","xhrOptions_","pendingSegments_","audioDisabled_","isPendingTimestampOffset_","gopBuffer_","timeMapping_","safeAppend_","appendInitSegment_","playlistOfLastInitSegment_","callQueue_","loadQueue_","metadataQueue_","waitingOnRemove_","quotaExceededErrorRetryTimeout_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","decrypter_","decrypter","syncController_","syncController","syncPoint_","transmuxer_","createTransmuxer_","triggerSyncInfoUpdate_","isEndOfStream_","ended_","fetchAtBuffer_","newState","hasEnoughInfoToAppend_","processCallQueue_","hasEnoughInfoToLoad_","processLoadQueue_","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","setAudio","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","checkForAbort_","_error","endOfStream","buffered_","_this$startingMediaIn","videoBuffered","audioBuffered","initSegmentForMap","storedMap","segmentKey","storedKey","couldBeginLoading_","playlist_","init_","resetEverything","newPlaylist","oldPlaylist","syncInfo","setDateTimeMappingForStart","oldId","resyncLoader","mediaSequenceDiff","resetLoader","saveExpiredSegmentInfo","force","removesRemaining","removeFinished","mapping","updatedBuffer","removeGopBuffer","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","getSyncPoint","targetTime","timelineSegments","getSyncSegmentCandidate","_Playlist$getMediaInf","_partIndex","nextSegment","generateSegmentInfo_","forceTimestampOffset","random","overrideCheck","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","currentTimePts","gopsSafeToAlignWith","videoTimestampOffset","timestampOffsetForSegment","earlyAbortWhenNeeded_","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","timeUntilRebuffer","switchCandidate","compatiblePlaylists","enabledPlaylists","rebufferingEstimates","numRequests","rebufferingImpact","noRebufferingPlaylists","estimate","minRebufferMaxBandwidthSelector","timeSavedBySwitching","minimumTimeSaving","handleAbort_","handleProgress_","simpleSegment","handleTrackInfo_","checkForIllegalMediaSwitch","akeys","bkeys","shallowEqual","handleTimingInfo_","timeType","timingInfoProperty","handleCaptions_","captionData","hasAppendedData_","captionTracks","captionTrack","trackName","_captionTracks$trackN","def","captionService","createCaptionsTrackIfNotExists","captionArray","addCaptionData","handleId3_","inBandMetadataTrackDispatchType","createMetadataTrackIfNotExists","processMetadataQueue_","callQueue","fun","loadQueue","_this$currentMediaInf","setTimeMapping_","updateMediaSecondsLoaded_","firstVideoFrameTimeForData","useVideoTimingInfo","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","appendData_","changedTimestampOffset","getInitSegmentAndUpdateState_","handleQuotaExceededError_","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","MIN_BACK_BUFFER","handleAppendError_","segmentObj","concatSegments","appendBuffer","handleSegmentTimingInfo_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","segmentRequestFinished_","removeToTime","trimTime","maxTrimTime","safeBackBufferTrimTime","previousSegment","saveTransferStats_","saveBandwidthRelatedStats_","handleTimeout_","updateGopBuffer","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","_this$currentMediaInf2","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","startingMedia","illegalMediaSwitch","didChange","prioritizedTimingInfo","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","segmentProcessingTime","segmentProcessingThroughput","Vhs$1","toTitleCase","bufferTypes","_updating","sourceBuffer","queuePending","shiftQueue","queueIndex","queueEntry","nextQueueIndexOfType","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","_duration","mime","addSourceBuffer","removeSourceBuffer","changeType","pushQueue","onUpdateend","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","initializedEme","hasCreatedSourceBuffers","hasInitializedAnyEme","createSourceBuffers","addOrChangeSourceBuffers","canRemoveSourceBuffer","canChangeType","SourceBuffer","processedAppend_","videoBuffer","que","audioBuffer","bufferA","bufferB","arity","extents","bufferIntersection","setDuration","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char3","VTTSegmentLoader","_SegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","combinedByteLength","combinedSegment","timestampOffsetForTimeline","skipEmptySegments_","stopForError","loadHandler","requested","parseVTTCues_","updateTimeMapping_","timelines","duplicates","occurrences","dupe","removeDuplicateCuesFromTrack","decoder","decodeBytesToString","TextDecoder","timestampmap","MPEGTS","LOCAL","ontimestampmap","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","syncPointStrategies","run","timelineToDatetimeMappings","lastDistance","datetimeMapping","discontinuitySync","discontinuities","SyncController","syncPoints","runStrategies_","selectSyncPoint_","getExpiredTime","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","firstSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","Decrypter","createCommonjsModule","basedir","require","commonjsRequire","createClass","_defineProperties","Constructor","protoProps","staticProps","__esModule","setPrototypeOf","_setPrototypeOf","inheritsLoose","create","aesTables","AES","tmp","xInv","x2","x4","tEnc","tDec","tables","encTable","decTable","sbox","sboxInv","th","precompute","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","b2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","STEP","encrypted32","Int32Array","asyncStream_","decryptChunk_","padded","init0","init1","init2","init3","wordIx","decipher","decrypted32","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","segmentLoaders","blacklistCurrentPlaylist","activeTrack","activeGroup","defaultTrack","onTrackChanged","setupListeners","requestOptions","initialize","_settings$mediaTypes$","groups","audioOnlyMaster","variantLabel","isMasterPlaylist","_settings$mediaTypes$2","_settings$mediaTypes$3","newProps","groupMatch","setupMediaGroups","_settings$segmentLoad3","audioSegmentLoader","mainSegmentLoader","variants","groupKeys","groupPropertyList","onGroupChanged","_settings$segmentLoad","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","onGroupChanging","_settings$segmentLoad2","lastTrack","mpc","selectPlaylist","fastQualityChange_","activeTrack_","onAudioTrackChanged","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","MasterPlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","experimentalBufferBasedABR","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","createMediaTypes","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","appendsToLoadedData_","timeToLoadedData_","checkABR_","nextPlaylist","shouldSwitchToMedia_","switchMedia_","cause","newId","abrTimer_","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","updatedPlaylist","selectedMedia","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","handleUpdatedMediaPlaylist","lastExcludeReason_","stuckAtPlaylistEnd_","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","currentPlaylist","forwardBuffer","bufferLowWaterLine","bufferHighWaterLine","sharedLogLine","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","_logLine","shouldSwitchToMedia","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","mediaSecondsLoaded_","smoothQualityChange_","absolutePlaylistEnd","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","updateDuration_","areMediaTypesKnown_","usingAudioLoader","playlistCodecs","unsupportedAudio","unsupportedCodecs","supporter","switchMessages","newCodec","oldCodec","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","blacklistReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","_segment$cueOutCont$s","adOffset","adTotal","updateAdCues","newMax","Representation","vhsHandler","playlistID","changePlaylistFn","qualityChangeFunction","smoothQualityChange","incompatible","currentlyEnabled","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","fixesBadSeeksHandler","fixesBadSeeks_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","checkCurrentTime_","isBufferedDifferent","isRangeDifferent","playlistId","waiting_","afterSeekableWindow_","beforeSeekableWindow_","closeToBufferedContent","currentRange","livePoint","videoUnderflow_","nextRange","difference","skipTheGap_","allowedEnd","gap","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","findGaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","reloadSourceOnError","version$4","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","comparePlaylistResolution","leftWidth","rightWidth","LOCAL_STORAGE_KEY","handleVhsMediaChange","qualityLevels","selectedIndex_","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","initializeMediaKeys","keySystemsOptionsArr","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","keySystemOptions","getAllPsshKeySystemsOptions","initializationFinishedPromises","keySessionCreatedPromises","race","setupEmeOptions","sourceOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","emeKeySystems","getVhsLocalStorage","storedObject","supportsNativeHls","canItPlay","supportsNativeDash","supportsTypeNatively","VhsHandler","hls","initialBandwidth","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","featuresNativeAudioTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","useBandwidthFromLocalStorage","option","dataUri","playbackWatcherOptions","playbackWatcher_","defaultSelector","invThroughput","invBandwidth","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","timeToLoadedData","currentTech","playerDimensions","objectToStore","updateVhsLocalStorage","setupEme_","setupQualityLevels_","mediaSourceUrl_","audioPlaylistLoader","didSetupEmeOptions","qualityLevels_","addQualityLevel","dash","convertToProgramTime","VhsSourceHandler","_videojs$mergeOptions2","supportedType","doccy","topLevel","minDoc","ReferenceError","b64Text","decodedString","atob","Buffer","copy","dest","Class","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","captureStackTrace","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","namespaceURI","_nsMap","prefix","localName","_onAddAttribute","_removeNamedNode","lastIndex","DOMImplementation","features","_features","feature","Node","_xmlEncoder","_visitNode","Document","_onUpdateChild","cs","_removeChild","previous","previousSibling","lastChild","_insertBefore","nextChild","cp","newFirst","newLast","pre","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","XMLSerializer","nodeSerializeToString","isHtml","nodeFilter","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","isHTML","ns","pubid","publicId","sysid","systemId","sub","internalSubset","importNode","deep","node2","attrs2","_ownerElement","setAttributeNode","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","versions","createDocument","qualifiedName","doctype","root","createElementNS","createDocumentType","refChild","oldChild","normalize","appendData","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","rtv","getElementsByClassName","pattern","createComment","createCDATASection","createProcessingInstruction","createAttribute","specified","createEntityReference","pl","createAttributeNS","getAttributeNode","removeAttributeNode","_appendSingleChild","setAttributeNodeNS","removeAttributeNS","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","getTextContent","$$length","reviver","searchInput","hasKeyCode","foundNamedKey","search","aliases","nameOrCode","alias","isFunction","initParams","params","createXHR","_createXHR","called","getBody","responseXML","firefoxBugTakenEffect","getXml","isJson","errorFunc","evt","timeoutTimer","failureResponse","loadFunc","useXDR","rawRequest","getAllResponseHeaders","parseHeaders","XDomainRequest","XMLHttpRequest","onprogress","onabort","ontimeout","username","password","setRequestHeader","send","iterator","forEachArray","alert","confirm","prompt","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","_objCreate","F","ParsingError","errorData","parseTimeStamp","input","computeSeconds","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","parseCue","regionList","oInput","consumeTimeStamp","Errors","BadTimeStamp","skipWhitespace","region","alt","vals","vals0","integer","lineAlign","snapToLines","center","positionAlign","consumeCueSettings","BadSignature","dflt","defaultKey","TEXTAREA_ELEMENT","TAG_NAME","u","ruby","rt","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","shouldAdd","current","annotation","rootDiv","tagStack","classes","cl","bgColor","colorName","propValue","strongRTLRanges","isStrongRTLChar","determineBidi","nodeStack","pushNodes","nextTextNode","StyleBox","CueStyleBox","styleOptions","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","textPos","formatStyle","move","BoxPosition","lh","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","boxPosition","linePos","textTrackList","mediaElement","computeLinePos","axis","maxPosition","initialAxis","calculatedPercentage","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","findBestPosition","toCSSCompatValues","unit","toMove","overlaps","getSimpleBoxPosition","convertCueToDOMTree","cuetext","overlay","paddedOverlay","margin","hasBeenReset","shouldCompute","reportOrThrowError","collectNextLine","pos","parseHeader","parseTimestampMap","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseRegion","alreadyCollectedLine","hasSubstring","directionSetting","alignSetting","findAlignSetting","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","SyntaxError","getCueAsHTML","scrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","findScrollSetting","isNativeReflectConstruct","Parent","Reflect","construct","Function","sham","Proxy","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","builtParts","baseURLPath","newPath","lastIndexOf","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","Symbol","species","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","toHex","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","LN2","locator","DOMHandler","cdata","lineNumber","columnNumber","_locator","_toString","chars","java","appendElement","hander","currentElement","sax","XMLReader","domBuilder","defaultNSMap","xmlns","entityMap","htmlEntity","setDocumentLocator","errorImpl","isCallback","build","msg","buildErrorHandler","startDocument","documentURI","startElement","qName","getURI","getQName","getLocator","endElement","startPrefixMapping","endPrefixMapping","processingInstruction","ins","ignorableWhitespace","ch","characters","charNode","skippedEntity","endDocument","comm","startCDATA","endCDATA","startDTD","impl","dt","warning","fatalError","ParseError","__DOMHandler","lt","gt","amp","quot","apos","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","times","divide","forall","exist","nabla","isin","notin","ni","prod","minus","lowast","radic","infin","ang","and","or","cap","cup","there4","sim","cong","asymp","ne","equiv","ge","sup","nsub","sube","supe","oplus","otimes","perp","sdot","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","rho","sigmaf","sigma","tau","upsilon","phi","chi","omega","thetasym","upsih","piv","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","euro","trade","larr","uarr","rarr","darr","harr","crarr","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","nameStartChar","nameChar","tagNamePattern","copyLocator","parseElementStartPart","currentNSMap","entityReplacer","addAttribute","qname","attributeNames","addValue","setTagName","closed","localNSMap","nsp","nsPrefix","_copy","parseHtmlSpecialContent","elStartEnd","elEndStart","fixSelfClosed","closeMap","parseDCC","matchs","lastMatch","endDTD","parseInstruction","ElementAttributes","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","appendText","xt","lineEnd","linePattern","lineStart","parseStack","tagStart","endMatch","locator2","getLocalName","MAX_UINT32","referenceId","earliestPresentationTime","referenceCount","getUint16","startsWithSap","sapType","sapDeltaTime"],"mappings":"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","file":"static/js/0.0c5b2e6a.chunk.js","sourcesContent":["var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","import { stringToBytes, toUint8, bytesMatch, bytesToString, toHexString, padStart, bytesToNumber } from './byte-helpers.js';\nimport { getAvcCodec, getHvcCodec, getAv1Codec } from './codec-helpers.js';\nimport { parseOpusHead } from './opus-helpers.js';\n\nvar normalizePath = function normalizePath(path) {\n if (typeof path === 'string') {\n return stringToBytes(path);\n }\n\n if (typeof path === 'number') {\n return path;\n }\n\n return path;\n};\n\nvar normalizePaths = function normalizePaths(paths) {\n if (!Array.isArray(paths)) {\n return [normalizePath(paths)];\n }\n\n return paths.map(function (p) {\n return normalizePath(p);\n });\n};\n\nvar DESCRIPTORS;\nexport var parseDescriptors = function parseDescriptors(bytes) {\n bytes = toUint8(bytes);\n var results = [];\n var i = 0;\n\n while (bytes.length > i) {\n var tag = bytes[i];\n var size = 0;\n var headerSize = 0; // tag\n\n headerSize++;\n var byte = bytes[headerSize]; // first byte\n\n headerSize++;\n\n while (byte & 0x80) {\n size = (byte & 0x7F) << 7;\n byte = bytes[headerSize];\n headerSize++;\n }\n\n size += byte & 0x7F;\n\n for (var z = 0; z < DESCRIPTORS.length; z++) {\n var _DESCRIPTORS$z = DESCRIPTORS[z],\n id = _DESCRIPTORS$z.id,\n parser = _DESCRIPTORS$z.parser;\n\n if (tag === id) {\n results.push(parser(bytes.subarray(headerSize, headerSize + size)));\n break;\n }\n }\n\n i += size + headerSize;\n }\n\n return results;\n};\nDESCRIPTORS = [{\n id: 0x03,\n parser: function parser(bytes) {\n var desc = {\n tag: 0x03,\n id: bytes[0] << 8 | bytes[1],\n flags: bytes[2],\n size: 3,\n dependsOnEsId: 0,\n ocrEsId: 0,\n descriptors: [],\n url: ''\n }; // depends on es id\n\n if (desc.flags & 0x80) {\n desc.dependsOnEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\n desc.size += 2;\n } // url\n\n\n if (desc.flags & 0x40) {\n var len = bytes[desc.size];\n desc.url = bytesToString(bytes.subarray(desc.size + 1, desc.size + 1 + len));\n desc.size += len;\n } // ocr es id\n\n\n if (desc.flags & 0x20) {\n desc.ocrEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\n desc.size += 2;\n }\n\n desc.descriptors = parseDescriptors(bytes.subarray(desc.size)) || [];\n return desc;\n }\n}, {\n id: 0x04,\n parser: function parser(bytes) {\n // DecoderConfigDescriptor\n var desc = {\n tag: 0x04,\n oti: bytes[0],\n streamType: bytes[1],\n bufferSize: bytes[2] << 16 | bytes[3] << 8 | bytes[4],\n maxBitrate: bytes[5] << 24 | bytes[6] << 16 | bytes[7] << 8 | bytes[8],\n avgBitrate: bytes[9] << 24 | bytes[10] << 16 | bytes[11] << 8 | bytes[12],\n descriptors: parseDescriptors(bytes.subarray(13))\n };\n return desc;\n }\n}, {\n id: 0x05,\n parser: function parser(bytes) {\n // DecoderSpecificInfo\n return {\n tag: 0x05,\n bytes: bytes\n };\n }\n}, {\n id: 0x06,\n parser: function parser(bytes) {\n // SLConfigDescriptor\n return {\n tag: 0x06,\n bytes: bytes\n };\n }\n}];\n/**\n * find any number of boxes by name given a path to it in an iso bmff\n * such as mp4.\n *\n * @param {TypedArray} bytes\n * bytes for the iso bmff to search for boxes in\n *\n * @param {Uint8Array[]|string[]|string|Uint8Array} name\n * An array of paths or a single path representing the name\n * of boxes to search through in bytes. Paths may be\n * uint8 (character codes) or strings.\n *\n * @param {boolean} [complete=false]\n * Should we search only for complete boxes on the final path.\n * This is very useful when you do not want to get back partial boxes\n * in the case of streaming files.\n *\n * @return {Uint8Array[]}\n * An array of the end paths that we found.\n */\n\nexport var findBox = function findBox(bytes, paths, complete) {\n if (complete === void 0) {\n complete = false;\n }\n\n paths = normalizePaths(paths);\n bytes = toUint8(bytes);\n var results = [];\n\n if (!paths.length) {\n // short-circuit the search for empty paths\n return results;\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n var size = (bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]) >>> 0;\n var type = bytes.subarray(i + 4, i + 8); // invalid box format.\n\n if (size === 0) {\n break;\n }\n\n var end = i + size;\n\n if (end > bytes.length) {\n // this box is bigger than the number of bytes we have\n // and complete is set, we cannot find any more boxes.\n if (complete) {\n break;\n }\n\n end = bytes.length;\n }\n\n var data = bytes.subarray(i + 8, end);\n\n if (bytesMatch(type, paths[0])) {\n if (paths.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data);\n } else {\n // recursively search for the next box along the path\n results.push.apply(results, findBox(data, paths.slice(1), complete));\n }\n }\n\n i = end;\n } // we've finished searching all of bytes\n\n\n return results;\n};\n/**\n * Search for a single matching box by name in an iso bmff format like\n * mp4. This function is useful for finding codec boxes which\n * can be placed arbitrarily in sample descriptions depending\n * on the version of the file or file type.\n *\n * @param {TypedArray} bytes\n * bytes for the iso bmff to search for boxes in\n *\n * @param {string|Uint8Array} name\n * The name of the box to find.\n *\n * @return {Uint8Array[]}\n * a subarray of bytes representing the name boxed we found.\n */\n\nexport var findNamedBox = function findNamedBox(bytes, name) {\n name = normalizePath(name);\n\n if (!name.length) {\n // short-circuit the search for empty paths\n return bytes.subarray(bytes.length);\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n if (bytesMatch(bytes.subarray(i, i + name.length), name)) {\n var size = (bytes[i - 4] << 24 | bytes[i - 3] << 16 | bytes[i - 2] << 8 | bytes[i - 1]) >>> 0;\n var end = size > 1 ? i + size : bytes.byteLength;\n return bytes.subarray(i + 4, end);\n }\n\n i++;\n } // we've finished searching all of bytes\n\n\n return bytes.subarray(bytes.length);\n};\n\nvar parseSamples = function parseSamples(data, entrySize, parseEntry) {\n if (entrySize === void 0) {\n entrySize = 4;\n }\n\n if (parseEntry === void 0) {\n parseEntry = function parseEntry(d) {\n return bytesToNumber(d);\n };\n }\n\n var entries = [];\n\n if (!data || !data.length) {\n return entries;\n }\n\n var entryCount = bytesToNumber(data.subarray(4, 8));\n\n for (var i = 8; entryCount; i += entrySize, entryCount--) {\n entries.push(parseEntry(data.subarray(i, i + entrySize)));\n }\n\n return entries;\n};\n\nexport var buildFrameTable = function buildFrameTable(stbl, timescale) {\n var keySamples = parseSamples(findBox(stbl, ['stss'])[0]);\n var chunkOffsets = parseSamples(findBox(stbl, ['stco'])[0]);\n var timeToSamples = parseSamples(findBox(stbl, ['stts'])[0], 8, function (entry) {\n return {\n sampleCount: bytesToNumber(entry.subarray(0, 4)),\n sampleDelta: bytesToNumber(entry.subarray(4, 8))\n };\n });\n var samplesToChunks = parseSamples(findBox(stbl, ['stsc'])[0], 12, function (entry) {\n return {\n firstChunk: bytesToNumber(entry.subarray(0, 4)),\n samplesPerChunk: bytesToNumber(entry.subarray(4, 8)),\n sampleDescriptionIndex: bytesToNumber(entry.subarray(8, 12))\n };\n });\n var stsz = findBox(stbl, ['stsz'])[0]; // stsz starts with a 4 byte sampleSize which we don't need\n\n var sampleSizes = parseSamples(stsz && stsz.length && stsz.subarray(4) || null);\n var frames = [];\n\n for (var chunkIndex = 0; chunkIndex < chunkOffsets.length; chunkIndex++) {\n var samplesInChunk = void 0;\n\n for (var i = 0; i < samplesToChunks.length; i++) {\n var sampleToChunk = samplesToChunks[i];\n var isThisOne = chunkIndex + 1 >= sampleToChunk.firstChunk && (i + 1 >= samplesToChunks.length || chunkIndex + 1 < samplesToChunks[i + 1].firstChunk);\n\n if (isThisOne) {\n samplesInChunk = sampleToChunk.samplesPerChunk;\n break;\n }\n }\n\n var chunkOffset = chunkOffsets[chunkIndex];\n\n for (var _i = 0; _i < samplesInChunk; _i++) {\n var frameEnd = sampleSizes[frames.length]; // if we don't have key samples every frame is a keyframe\n\n var keyframe = !keySamples.length;\n\n if (keySamples.length && keySamples.indexOf(frames.length + 1) !== -1) {\n keyframe = true;\n }\n\n var frame = {\n keyframe: keyframe,\n start: chunkOffset,\n end: chunkOffset + frameEnd\n };\n\n for (var k = 0; k < timeToSamples.length; k++) {\n var _timeToSamples$k = timeToSamples[k],\n sampleCount = _timeToSamples$k.sampleCount,\n sampleDelta = _timeToSamples$k.sampleDelta;\n\n if (frames.length <= sampleCount) {\n // ms to ns\n var lastTimestamp = frames.length ? frames[frames.length - 1].timestamp : 0;\n frame.timestamp = lastTimestamp + sampleDelta / timescale * 1000;\n frame.duration = sampleDelta;\n break;\n }\n }\n\n frames.push(frame);\n chunkOffset += frameEnd;\n }\n }\n\n return frames;\n};\nexport var addSampleDescription = function addSampleDescription(track, bytes) {\n var codec = bytesToString(bytes.subarray(0, 4));\n\n if (track.type === 'video') {\n track.info = track.info || {};\n track.info.width = bytes[28] << 8 | bytes[29];\n track.info.height = bytes[30] << 8 | bytes[31];\n } else if (track.type === 'audio') {\n track.info = track.info || {};\n track.info.channels = bytes[20] << 8 | bytes[21];\n track.info.bitDepth = bytes[22] << 8 | bytes[23];\n track.info.sampleRate = bytes[28] << 8 | bytes[29];\n }\n\n if (codec === 'avc1') {\n var avcC = findNamedBox(bytes, 'avcC'); // AVCDecoderConfigurationRecord\n\n codec += \".\" + getAvcCodec(avcC);\n track.info.avcC = avcC; // TODO: do we need to parse all this?\n\n /* {\n configurationVersion: avcC[0],\n profile: avcC[1],\n profileCompatibility: avcC[2],\n level: avcC[3],\n lengthSizeMinusOne: avcC[4] & 0x3\n };\n let spsNalUnitCount = avcC[5] & 0x1F;\n const spsNalUnits = track.info.avc.spsNalUnits = [];\n // past spsNalUnitCount\n let offset = 6;\n while (spsNalUnitCount--) {\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\n spsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\n offset += nalLen + 2;\n }\n let ppsNalUnitCount = avcC[offset];\n const ppsNalUnits = track.info.avc.ppsNalUnits = [];\n // past ppsNalUnitCount\n offset += 1;\n while (ppsNalUnitCount--) {\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\n ppsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\n offset += nalLen + 2;\n }*/\n // HEVCDecoderConfigurationRecord\n } else if (codec === 'hvc1' || codec === 'hev1') {\n codec += \".\" + getHvcCodec(findNamedBox(bytes, 'hvcC'));\n } else if (codec === 'mp4a' || codec === 'mp4v') {\n var esds = findNamedBox(bytes, 'esds');\n var esDescriptor = parseDescriptors(esds.subarray(4))[0];\n var decoderConfig = esDescriptor && esDescriptor.descriptors.filter(function (_ref) {\n var tag = _ref.tag;\n return tag === 0x04;\n })[0];\n\n if (decoderConfig) {\n // most codecs do not have a further '.'\n // such as 0xa5 for ac-3 and 0xa6 for e-ac-3\n codec += '.' + toHexString(decoderConfig.oti);\n\n if (decoderConfig.oti === 0x40) {\n codec += '.' + (decoderConfig.descriptors[0].bytes[0] >> 3).toString();\n } else if (decoderConfig.oti === 0x20) {\n codec += '.' + decoderConfig.descriptors[0].bytes[4].toString();\n } else if (decoderConfig.oti === 0xdd) {\n codec = 'vorbis';\n }\n } else if (track.type === 'audio') {\n codec += '.40.2';\n } else {\n codec += '.20.9';\n }\n } else if (codec === 'av01') {\n // AV1DecoderConfigurationRecord\n codec += \".\" + getAv1Codec(findNamedBox(bytes, 'av1C'));\n } else if (codec === 'vp09') {\n // VPCodecConfigurationRecord\n var vpcC = findNamedBox(bytes, 'vpcC'); // https://www.webmproject.org/vp9/mp4/\n\n var profile = vpcC[0];\n var level = vpcC[1];\n var bitDepth = vpcC[2] >> 4;\n var chromaSubsampling = (vpcC[2] & 0x0F) >> 1;\n var videoFullRangeFlag = (vpcC[2] & 0x0F) >> 3;\n var colourPrimaries = vpcC[3];\n var transferCharacteristics = vpcC[4];\n var matrixCoefficients = vpcC[5];\n codec += \".\" + padStart(profile, 2, '0');\n codec += \".\" + padStart(level, 2, '0');\n codec += \".\" + padStart(bitDepth, 2, '0');\n codec += \".\" + padStart(chromaSubsampling, 2, '0');\n codec += \".\" + padStart(colourPrimaries, 2, '0');\n codec += \".\" + padStart(transferCharacteristics, 2, '0');\n codec += \".\" + padStart(matrixCoefficients, 2, '0');\n codec += \".\" + padStart(videoFullRangeFlag, 2, '0');\n } else if (codec === 'theo') {\n codec = 'theora';\n } else if (codec === 'spex') {\n codec = 'speex';\n } else if (codec === '.mp3') {\n codec = 'mp4a.40.34';\n } else if (codec === 'msVo') {\n codec = 'vorbis';\n } else if (codec === 'Opus') {\n codec = 'opus';\n var dOps = findNamedBox(bytes, 'dOps');\n track.info.opus = parseOpusHead(dOps); // TODO: should this go into the webm code??\n // Firefox requires a codecDelay for opus playback\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1276238\n\n track.info.codecDelay = 6500000;\n } else {\n codec = codec.toLowerCase();\n }\n /* eslint-enable */\n // flac, ac-3, ec-3, opus\n\n\n track.codec = codec;\n};\nexport var parseTracks = function parseTracks(bytes, frameTable) {\n if (frameTable === void 0) {\n frameTable = true;\n }\n\n bytes = toUint8(bytes);\n var traks = findBox(bytes, ['moov', 'trak'], true);\n var tracks = [];\n traks.forEach(function (trak) {\n var track = {\n bytes: trak\n };\n var mdia = findBox(trak, ['mdia'])[0];\n var hdlr = findBox(mdia, ['hdlr'])[0];\n var trakType = bytesToString(hdlr.subarray(8, 12));\n\n if (trakType === 'soun') {\n track.type = 'audio';\n } else if (trakType === 'vide') {\n track.type = 'video';\n } else {\n track.type = trakType;\n }\n\n var tkhd = findBox(trak, ['tkhd'])[0];\n\n if (tkhd) {\n var view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n var tkhdVersion = view.getUint8(0);\n track.number = tkhdVersion === 0 ? view.getUint32(12) : view.getUint32(20);\n }\n\n var mdhd = findBox(mdia, ['mdhd'])[0];\n\n if (mdhd) {\n // mdhd is a FullBox, meaning it will have its own version as the first byte\n var version = mdhd[0];\n var index = version === 0 ? 12 : 20;\n track.timescale = (mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]) >>> 0;\n }\n\n var stbl = findBox(mdia, ['minf', 'stbl'])[0];\n var stsd = findBox(stbl, ['stsd'])[0];\n var descriptionCount = bytesToNumber(stsd.subarray(4, 8));\n var offset = 8; // add codec and codec info\n\n while (descriptionCount--) {\n var len = bytesToNumber(stsd.subarray(offset, offset + 4));\n var sampleDescriptor = stsd.subarray(offset + 4, offset + 4 + len);\n addSampleDescription(track, sampleDescriptor);\n offset += 4 + len;\n }\n\n if (frameTable) {\n track.frameTable = buildFrameTable(stbl, track.timescale);\n } // codec has no sub parameters\n\n\n tracks.push(track);\n });\n return tracks;\n};\nexport var parseMediaInfo = function parseMediaInfo(bytes) {\n var mvhd = findBox(bytes, ['moov', 'mvhd'], true)[0];\n\n if (!mvhd || !mvhd.length) {\n return;\n }\n\n var info = {}; // ms to ns\n // mvhd v1 has 8 byte duration and other fields too\n\n if (mvhd[0] === 1) {\n info.timestampScale = bytesToNumber(mvhd.subarray(20, 24));\n info.duration = bytesToNumber(mvhd.subarray(24, 32));\n } else {\n info.timestampScale = bytesToNumber(mvhd.subarray(12, 16));\n info.duration = bytesToNumber(mvhd.subarray(16, 20));\n }\n\n info.bytes = mvhd;\n return info;\n};","import URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nexport default resolveUrl;","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","/*! @name m3u8-parser @version 4.7.0 @license Apache-2.0 */\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(Stream);\n\nvar TAB = String.fromCharCode(0x09);\n\nvar parseByterange = function parseByterange(byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n var match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n var result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n var subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(Stream);\n\nvar camelCase = function camelCase(str) {\n return str.toLowerCase().replace(/-(\\w)/g, function (a) {\n return a[1].toUpperCase();\n });\n};\n\nvar camelCaseKeys = function camelCaseKeys(attributes) {\n var result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nvar setHoldBack = function setHoldBack(manifest) {\n var serverControl = manifest.serverControl,\n targetDuration = manifest.targetDuration,\n partTargetDuration = manifest.partTargetDuration;\n\n if (!serverControl) {\n return;\n }\n\n var tag = '#EXT-X-SERVER-CONTROL';\n var hb = 'holdBack';\n var phb = 'partHoldBack';\n var minTargetDuration = targetDuration && targetDuration * 3;\n var minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: tag + \" defaulting HOLD-BACK to targetDuration * 3 (\" + minTargetDuration + \").\"\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: tag + \" clamping HOLD-BACK (\" + serverControl[hb] + \") to targetDuration * 3 (\" + minTargetDuration + \")\"\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: tag + \" defaulting PART-HOLD-BACK to partTargetDuration * 3 (\" + serverControl[phb] + \").\"\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: tag + \" clamping PART-HOLD-BACK (\" + serverControl[phb] + \") to partTargetDuration * 2 (\" + minPartDuration + \").\"\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new LineStream();\n _this.parseStream = new ParseStream();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var hasParts = false;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n var lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n var lastPartByterangeEnd = 0;\n\n _this.on('end', function () {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && _key) {\n currentUri.key = _key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n _this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n version: function version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (_key) {\n currentMap.key = _key;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n },\n 'skip': function skip() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n 'part': function part() {\n var _this2 = this;\n\n hasParts = true; // parts are always specifed before a segment\n\n var segmentIndex = this.manifest.segments.length;\n var part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n var partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PART #\" + partIndex + \" for segment #\" + segmentIndex, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach(function (r, i) {\n if (!r.hasOwnProperty('lastPart')) {\n _this2.trigger('warn', {\n message: \"#EXT-X-RENDITION-REPORT #\" + i + \" lacks required attribute(s): LAST-PART\"\n });\n }\n });\n }\n },\n 'server-control': function serverControl() {\n var attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n 'preload-hint': function preloadHint() {\n // parts are always specifed before a segment\n var segmentIndex = this.manifest.segments.length;\n var hint = camelCaseKeys(entry.attributes);\n var isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n var index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (var i = 0; i < currentUri.preloadHints.length - 1; i++) {\n var otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: \"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex + \" has the same TYPE \" + hint.type + \" as preload hint #\" + i\n });\n }\n }\n },\n 'rendition-report': function renditionReport() {\n var report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n var index = this.manifest.renditionReports.length - 1;\n var required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(\"#EXT-X-RENDITION-REPORT #\" + index, entry.attributes, required);\n },\n 'part-inf': function partInf() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // prepare for the next URI\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n\n var _proto = Parser.prototype;\n\n _proto.warnOnMissingAttributes_ = function warnOnMissingAttributes_(identifier, attributes, required) {\n var missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: identifier + \" lacks required attribute(s): \" + missing.join(', ')\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n ;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(Stream);\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","/*! @name mpd-parser @version 0.17.0 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from 'xmldom';\n\nvar version = \"0.17.0\";\n\nvar isObject = function isObject(obj) {\n return !!obj && typeof obj === 'object';\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n return objects.reduce(function (result, source) {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-');\n var startRange = parseInt(ranges[0], 10);\n var endRange = parseInt(ranges[1], 10); // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n segment.byterange = {\n length: endRange - startRange + 1,\n offset: startRange\n };\n }\n\n return segment;\n};\nvar byteRangeToString = function byteRangeToString(byterange) {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n var endRange = byterange.offset + byterange.length - 1;\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nvar parseEndNumber = function parseEndNumber(endNumber) {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration;\n var endNumber = parseEndNumber(attributes.endNumber);\n return {\n start: 0,\n end: typeof endNumber === 'number' ? endNumber : Math.ceil(sourceDuration / (duration / timescale))\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic: function dynamic(attributes) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n duration = attributes.duration,\n _attributes$start = attributes.start,\n start = _attributes$start === void 0 ? 0 : _attributes$start,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var endNumber = parseEndNumber(attributes.endNumber);\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + start;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number, index) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodIndex = attributes.periodIndex,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodIndex,\n time: index * duration\n };\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseByDuration = function parseByDuration(attributes) {\n var _attributes$type = attributes.type,\n type = _attributes$type === void 0 ? 'static' : _attributes$type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n sourceDuration = attributes.sourceDuration;\n\n var _segmentRange$type = segmentRange[type](attributes),\n start = _segmentRange$type.start,\n end = _segmentRange$type.end;\n\n var segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n var index = segments.length - 1; // final segment may be less than full segment duration\n\n segments[index].duration = sourceDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = 0;\n } // This is used for mediaSequence\n\n\n segment.number = 0;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSidxSegmentsToPlaylist = function addSidxSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial master manifest parsing\n\n var sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n var timeline = playlist.timeline || 0;\n var sidxByteRange = playlist.sidx.byterange;\n var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n var mediaReferences = sidx.references.filter(function (r) {\n return r.referenceType !== 1;\n });\n var segments = []; // firstOffset is the offset from the end of the sidx box\n\n var startIndex = sidxEnd + sidx.firstOffset;\n\n for (var i = 0; i < mediaReferences.length; i++) {\n var reference = sidx.references[i]; // size of the referenced (sub)segment\n\n var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n var duration = reference.subsegmentDuration; // should be an inclusive range\n\n var endIndex = startIndex + size - 1;\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n // this is used in parseByDuration\n periodIndex: timeline,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n startIndex += size;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar generateSidxKey = function generateSidxKey(sidx) {\n return sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || ''); // Periods after first\n\n if (acc[name]) {\n var _acc$name$segments;\n\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments); // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n } else {\n // first Period\n acc[name] = playlist;\n }\n\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments, 'discontinuity');\n return playlist;\n });\n};\n\nvar addSidxSegmentsToPlaylist$1 = function addSidxSegmentsToPlaylist$1(playlist, sidxMapping) {\n var sidxKey = generateSidxKey(playlist.sidx);\n var sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nvar addSidxSegmentsToPlaylists = function addSidxSegmentsToPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist$1(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref, isAudioOnly) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx;\n var playlist = {\n attributes: (_attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs\n }, _attributes['PROGRAM-ID'] = 1, _attributes),\n uri: '',\n endList: (attributes.type || 'static') === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _m3u8Attributes;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodIndex,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n var m3u8Attributes = (_m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _m3u8Attributes['PROGRAM-ID'] = 1, _m3u8Attributes);\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n return {\n attributes: m3u8Attributes,\n uri: '',\n endList: (attributes.type || 'static') === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping, isAudioOnly) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (isAudioOnly === void 0) {\n isAudioOnly = false;\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n }\n\n if (!a[label]) {\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n var formatted = addSidxSegmentsToPlaylist$1(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist$1(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nvar organizeCaptionServices = function organizeCaptionServices(captionServices) {\n return captionServices.reduce(function (svcObj, svc) {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(function (service) {\n var channel = service.channel,\n language = service.language;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language: language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n }, {});\n};\n\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes2;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx;\n var playlist = {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: (attributes.type || 'static') === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nvar videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n};\n\nvar audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n};\n\nvar vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n};\n\nvar toM3u8 = function toM3u8(dashPlaylists, locations, sidxMapping) {\n var _mediaGroups;\n\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all master attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n _dashPlaylists$0$attr2 = _dashPlaylists$0$attr.type,\n type = _dashPlaylists$0$attr2 === void 0 ? 'static' : _dashPlaylists$0$attr2,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n minimumUpdatePeriod = _dashPlaylists$0$attr.minimumUpdatePeriod;\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = dashPlaylists.filter(vttOnly);\n var captions = dashPlaylists.map(function (playlist) {\n return playlist.attributes.captionServices;\n }).filter(Boolean);\n var master = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n master.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n master.locations = locations;\n }\n\n if (type === 'dynamic') {\n master.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n var isAudioOnly = master.playlists.length === 0;\n\n if (audioPlaylists.length) {\n master.mediaGroups.AUDIO.audio = organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly);\n }\n\n if (vttPlaylists.length) {\n master.mediaGroups.SUBTITLES.subs = organizeVttPlaylists(vttPlaylists, sidxMapping);\n }\n\n if (captions.length) {\n master.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n return master;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nvar getLiveRValue = function getLiveRValue(attributes, time, duration) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$start = attributes.start,\n start = _attributes$start === void 0 ? 0 : _attributes$start,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + start;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nvar parseByTimeline = function parseByTimeline(attributes, segmentTimeline) {\n var _attributes$type = attributes.type,\n type = _attributes$type === void 0 ? 'static' : _attributes$type,\n _attributes$minimumUp2 = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2,\n _attributes$media = attributes.media,\n media = _attributes$media === void 0 ? '' : _attributes$media,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb,\n timeline = attributes.periodIndex;\n var segments = [];\n var time = -1;\n\n for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n var S = segmentTimeline[sIndex];\n var duration = S.d;\n var repeat = S.r || 0;\n var segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n var count = void 0;\n\n if (repeat < 0) {\n var nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n var end = startNumber + segments.length + count;\n var number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number: number,\n duration: duration / timescale,\n time: time,\n timeline: timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nvar identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nvar identifierReplacement = function identifierReplacement(values) {\n return function (match, identifier, format, width) {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n var value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return \"\" + new Array(width - value.length + 1).join('0') + value;\n };\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nvar constructTemplateUrl = function constructTemplateUrl(url, values) {\n return url.replace(identifierPattern, identifierReplacement(values));\n};\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodIndex\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nvar segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) {\n var templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n var _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {\n sourceURL: '',\n range: ''\n } : _attributes$initializ;\n var mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n var segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(function (segment) {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n var uri = constructTemplateUrl(attributes.media || '', templateValues);\n var map = {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number\n };\n\n if (attributes.presentationTimeOffset) {\n map.presentationTimeOffset = attributes.presentationTimeOffset;\n }\n\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) {\n return SegmentURLToSegmentObject(attributes, segmentUrlObject);\n });\n var segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n var segments = segmentTimeInfo.map(function (segmentTime, index) {\n if (segmentUrlMap[index]) {\n var segment = segmentUrlMap[index];\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(function (segment) {\n return segment;\n });\n return segments;\n};\n\nvar generateSegments = function generateSegments(_ref) {\n var attributes = _ref.attributes,\n segmentInfo = _ref.segmentInfo;\n var segmentAttributes;\n var segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n\n if (segmentInfo.template.presentationTimeOffset) {\n segmentAttributes.presentationTimeOffset = segmentInfo.template.presentationTimeOffset / segmentInfo.template.timescale;\n }\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n var segmentsInfo = {\n attributes: attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n var segments = segmentsFn(segmentAttributes, segmentInfo.timeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n var _segmentAttributes = segmentAttributes,\n duration = _segmentAttributes.duration,\n _segmentAttributes$ti = _segmentAttributes.timescale,\n timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce(function (max, segment) {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nvar toPlaylists = function toPlaylists(representations) {\n return representations.map(generateSegments);\n};\n\nvar findChildren = function findChildren(element, name) {\n return from(element.childNodes).filter(function (_ref) {\n var tagName = _ref.tagName;\n return tagName === name;\n });\n};\nvar getContent = function getContent(element) {\n return element.textContent.trim();\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset: function presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} timeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nvar getSegmentInformation = function getSegmentInformation(adaptationSet) {\n var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n var segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) {\n return merge({\n tag: 'SegmentURL'\n }, parseAttributes(s));\n });\n var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n var segmentTimelineParentNode = segmentList || segmentTemplate;\n var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n var template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n var segmentInfo = {\n template: template,\n timeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) {\n return parseAttributes(s);\n }),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls: segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(function (key) {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {string[]} adaptationSetBaseUrls\n * Contains list of resolved base urls inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nvar inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) {\n return function (representation) {\n var repBaseUrlElements = findChildren(representation, 'BaseURL');\n var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n var attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n var representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(function (baseUrl) {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, {\n baseUrl: baseUrl\n })\n };\n });\n };\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nvar generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) {\n return contentProtectionNodes.reduce(function (acc, node) {\n var attributes = parseAttributes(node);\n var keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes: attributes\n };\n var psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n var pssh = getContent(psshNode);\n var psshBuffer = pssh && decodeB64ToUint8Array(pssh);\n acc[keySystem].pssh = psshBuffer;\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nvar parseCaptionServiceMetadata = function parseCaptionServiceMetadata(service) {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n var values = service.value.split(';');\n return values.map(function (value) {\n var channel;\n var language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n var _value$split = value.split('=');\n\n channel = _value$split[0];\n language = _value$split[1];\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel: channel,\n language: language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n var _values = service.value.split(';');\n\n return _values.map(function (value) {\n var flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n var _value$split2 = value.split('='),\n channel = _value$split2[0],\n _value$split2$ = _value$split2[1],\n opts = _value$split2$ === void 0 ? '' : _value$split2$;\n\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(function (opt) {\n var _opt$split = opt.split(':'),\n name = _opt$split[0],\n val = _opt$split[1];\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n var captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices: captionServices\n });\n }\n\n var label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n var labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Maps an Period node to a list of Representation inforamtion objects for all\n * AdaptationSet nodes contained within the Period\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {Node} period\n * Period node from the mpd\n * @param {number} periodIndex\n * Index of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {string[]} mpdBaseUrls\n * Contains list of resolved base urls inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nvar toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) {\n return function (period, index) {\n var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period, 'BaseURL'));\n var periodAtt = parseAttributes(period);\n var parsedPeriodId = parseInt(periodAtt.id, 10); // fallback to mapping index if Period@id is not a number\n\n var periodIndex = window.isNaN(parsedPeriodId) ? index : parsedPeriodId;\n var periodAttributes = merge(mpdAttributes, {\n periodIndex: periodIndex\n });\n var adaptationSets = findChildren(period, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nvar inheritAttributes = function inheritAttributes(mpd, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$manifestUri = _options.manifestUri,\n manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri,\n _options$NOW = _options.NOW,\n NOW = _options$NOW === void 0 ? Date.now() : _options$NOW,\n _options$clientOffset = _options.clientOffset,\n clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset;\n var periods = findChildren(mpd, 'Period');\n\n if (!periods.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var locations = findChildren(mpd, 'Location');\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL'));\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n return {\n locations: mpdAttributes.locations,\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)))\n };\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml;\n var mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throwsw on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n var playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8(playlists, parsedManifestInfo.locations, options.sidxMapping);\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return ArrayBuffer.isView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","export var OPUS_HEAD = new Uint8Array([// O, p, u, s\n0x4f, 0x70, 0x75, 0x73, // H, e, a, d\n0x48, 0x65, 0x61, 0x64]); // https://wiki.xiph.org/OggOpus\n// https://vfrmaniac.fushizen.eu/contents/opus_in_isobmff.html\n// https://opus-codec.org/docs/opusfile_api-0.7/structOpusHead.html\n\nexport var parseOpusHead = function parseOpusHead(bytes) {\n var view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var version = view.getUint8(0); // version 0, from mp4, does not use littleEndian.\n\n var littleEndian = version !== 0;\n var config = {\n version: version,\n channels: view.getUint8(1),\n preSkip: view.getUint16(2, littleEndian),\n sampleRate: view.getUint32(4, littleEndian),\n outputGain: view.getUint16(8, littleEndian),\n channelMappingFamily: view.getUint8(10)\n };\n\n if (config.channelMappingFamily > 0 && bytes.length > 10) {\n config.streamCount = view.getUint8(11);\n config.twoChannelStreamCount = view.getUint8(12);\n config.channelMapping = [];\n\n for (var c = 0; c < config.channels; c++) {\n config.channelMapping.push(view.getUint8(13 + c));\n }\n }\n\n return config;\n};\nexport var setOpusHead = function setOpusHead(config) {\n var size = config.channelMappingFamily <= 0 ? 11 : 12 + config.channels;\n var view = new DataView(new ArrayBuffer(size));\n var littleEndian = config.version !== 0;\n view.setUint8(0, config.version);\n view.setUint8(1, config.channels);\n view.setUint16(2, config.preSkip, littleEndian);\n view.setUint32(4, config.sampleRate, littleEndian);\n view.setUint16(8, config.outputGain, littleEndian);\n view.setUint8(10, config.channelMappingFamily);\n\n if (config.channelMappingFamily > 0) {\n view.setUint8(11, config.streamCount);\n config.channelMapping.foreach(function (cm, i) {\n view.setUint8(12 + i, cm);\n });\n }\n\n return new Uint8Array(view.buffer);\n};","import { toUint8, bytesToNumber, bytesMatch, bytesToString, numberToBytes, padStart } from './byte-helpers';\nimport { getAvcCodec, getHvcCodec, getAv1Codec } from './codec-helpers.js'; // relevant specs for this parser:\n// https://matroska-org.github.io/libebml/specs.html\n// https://www.matroska.org/technical/elements.html\n// https://www.webmproject.org/docs/container/\n\nexport var EBML_TAGS = {\n EBML: toUint8([0x1A, 0x45, 0xDF, 0xA3]),\n DocType: toUint8([0x42, 0x82]),\n Segment: toUint8([0x18, 0x53, 0x80, 0x67]),\n SegmentInfo: toUint8([0x15, 0x49, 0xA9, 0x66]),\n Tracks: toUint8([0x16, 0x54, 0xAE, 0x6B]),\n Track: toUint8([0xAE]),\n TrackNumber: toUint8([0xd7]),\n DefaultDuration: toUint8([0x23, 0xe3, 0x83]),\n TrackEntry: toUint8([0xAE]),\n TrackType: toUint8([0x83]),\n FlagDefault: toUint8([0x88]),\n CodecID: toUint8([0x86]),\n CodecPrivate: toUint8([0x63, 0xA2]),\n VideoTrack: toUint8([0xe0]),\n AudioTrack: toUint8([0xe1]),\n // Not used yet, but will be used for live webm/mkv\n // see https://www.matroska.org/technical/basics.html#block-structure\n // see https://www.matroska.org/technical/basics.html#simpleblock-structure\n Cluster: toUint8([0x1F, 0x43, 0xB6, 0x75]),\n Timestamp: toUint8([0xE7]),\n TimestampScale: toUint8([0x2A, 0xD7, 0xB1]),\n BlockGroup: toUint8([0xA0]),\n BlockDuration: toUint8([0x9B]),\n Block: toUint8([0xA1]),\n SimpleBlock: toUint8([0xA3])\n};\n/**\n * This is a simple table to determine the length\n * of things in ebml. The length is one based (starts at 1,\n * rather than zero) and for every zero bit before a one bit\n * we add one to length. We also need this table because in some\n * case we have to xor all the length bits from another value.\n */\n\nvar LENGTH_TABLE = [128, 64, 32, 16, 8, 4, 2, 1];\n\nvar getLength = function getLength(byte) {\n var len = 1;\n\n for (var i = 0; i < LENGTH_TABLE.length; i++) {\n if (byte & LENGTH_TABLE[i]) {\n break;\n }\n\n len++;\n }\n\n return len;\n}; // length in ebml is stored in the first 4 to 8 bits\n// of the first byte. 4 for the id length and 8 for the\n// data size length. Length is measured by converting the number to binary\n// then 1 + the number of zeros before a 1 is encountered starting\n// from the left.\n\n\nvar getvint = function getvint(bytes, offset, removeLength, signed) {\n if (removeLength === void 0) {\n removeLength = true;\n }\n\n if (signed === void 0) {\n signed = false;\n }\n\n var length = getLength(bytes[offset]);\n var valueBytes = bytes.subarray(offset, offset + length); // NOTE that we do **not** subarray here because we need to copy these bytes\n // as they will be modified below to remove the dataSizeLen bits and we do not\n // want to modify the original data. normally we could just call slice on\n // uint8array but ie 11 does not support that...\n\n if (removeLength) {\n valueBytes = Array.prototype.slice.call(bytes, offset, offset + length);\n valueBytes[0] ^= LENGTH_TABLE[length - 1];\n }\n\n return {\n length: length,\n value: bytesToNumber(valueBytes, {\n signed: signed\n }),\n bytes: valueBytes\n };\n};\n\nvar normalizePath = function normalizePath(path) {\n if (typeof path === 'string') {\n return path.match(/.{1,2}/g).map(function (p) {\n return normalizePath(p);\n });\n }\n\n if (typeof path === 'number') {\n return numberToBytes(path);\n }\n\n return path;\n};\n\nvar normalizePaths = function normalizePaths(paths) {\n if (!Array.isArray(paths)) {\n return [normalizePath(paths)];\n }\n\n return paths.map(function (p) {\n return normalizePath(p);\n });\n};\n\nvar getInfinityDataSize = function getInfinityDataSize(id, bytes, offset) {\n if (offset >= bytes.length) {\n return bytes.length;\n }\n\n var innerid = getvint(bytes, offset, false);\n\n if (bytesMatch(id.bytes, innerid.bytes)) {\n return offset;\n }\n\n var dataHeader = getvint(bytes, offset + innerid.length);\n return getInfinityDataSize(id, bytes, offset + dataHeader.length + dataHeader.value + innerid.length);\n};\n/**\n * Notes on the EBLM format.\n *\n * EBLM uses \"vints\" tags. Every vint tag contains\n * two parts\n *\n * 1. The length from the first byte. You get this by\n * converting the byte to binary and counting the zeros\n * before a 1. Then you add 1 to that. Examples\n * 00011111 = length 4 because there are 3 zeros before a 1.\n * 00100000 = length 3 because there are 2 zeros before a 1.\n * 00000011 = length 7 because there are 6 zeros before a 1.\n *\n * 2. The bits used for length are removed from the first byte\n * Then all the bytes are merged into a value. NOTE: this\n * is not the case for id ebml tags as there id includes\n * length bits.\n *\n */\n\n\nexport var findEbml = function findEbml(bytes, paths) {\n paths = normalizePaths(paths);\n bytes = toUint8(bytes);\n var results = [];\n\n if (!paths.length) {\n return results;\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n var id = getvint(bytes, i, false);\n var dataHeader = getvint(bytes, i + id.length);\n var dataStart = i + id.length + dataHeader.length; // dataSize is unknown or this is a live stream\n\n if (dataHeader.value === 0x7f) {\n dataHeader.value = getInfinityDataSize(id, bytes, dataStart);\n\n if (dataHeader.value !== bytes.length) {\n dataHeader.value -= dataStart;\n }\n }\n\n var dataEnd = dataStart + dataHeader.value > bytes.length ? bytes.length : dataStart + dataHeader.value;\n var data = bytes.subarray(dataStart, dataEnd);\n\n if (bytesMatch(paths[0], id.bytes)) {\n if (paths.length === 1) {\n // this is the end of the paths and we've found the tag we were\n // looking for\n results.push(data);\n } else {\n // recursively search for the next tag inside of the data\n // of this one\n results = results.concat(findEbml(data, paths.slice(1)));\n }\n }\n\n var totalLength = id.length + dataHeader.length + data.length; // move past this tag entirely, we are not looking for it\n\n i += totalLength;\n }\n\n return results;\n}; // see https://www.matroska.org/technical/basics.html#block-structure\n\nexport var decodeBlock = function decodeBlock(block, type, timestampScale, clusterTimestamp) {\n var duration;\n\n if (type === 'group') {\n duration = findEbml(block, [EBML_TAGS.BlockDuration])[0];\n\n if (duration) {\n duration = bytesToNumber(duration);\n duration = 1 / timestampScale * duration * timestampScale / 1000;\n }\n\n block = findEbml(block, [EBML_TAGS.Block])[0];\n type = 'block'; // treat data as a block after this point\n }\n\n var dv = new DataView(block.buffer, block.byteOffset, block.byteLength);\n var trackNumber = getvint(block, 0);\n var timestamp = dv.getInt16(trackNumber.length, false);\n var flags = block[trackNumber.length + 2];\n var data = block.subarray(trackNumber.length + 3); // pts/dts in seconds\n\n var ptsdts = 1 / timestampScale * (clusterTimestamp + timestamp) * timestampScale / 1000; // return the frame\n\n var parsed = {\n duration: duration,\n trackNumber: trackNumber.value,\n keyframe: type === 'simple' && flags >> 7 === 1,\n invisible: (flags & 0x08) >> 3 === 1,\n lacing: (flags & 0x06) >> 1,\n discardable: type === 'simple' && (flags & 0x01) === 1,\n frames: [],\n pts: ptsdts,\n dts: ptsdts,\n timestamp: timestamp\n };\n\n if (!parsed.lacing) {\n parsed.frames.push(data);\n return parsed;\n }\n\n var numberOfFrames = data[0] + 1;\n var frameSizes = [];\n var offset = 1; // Fixed\n\n if (parsed.lacing === 2) {\n var sizeOfFrame = (data.length - offset) / numberOfFrames;\n\n for (var i = 0; i < numberOfFrames; i++) {\n frameSizes.push(sizeOfFrame);\n }\n } // xiph\n\n\n if (parsed.lacing === 1) {\n for (var _i = 0; _i < numberOfFrames - 1; _i++) {\n var size = 0;\n\n do {\n size += data[offset];\n offset++;\n } while (data[offset - 1] === 0xFF);\n\n frameSizes.push(size);\n }\n } // ebml\n\n\n if (parsed.lacing === 3) {\n // first vint is unsinged\n // after that vints are singed and\n // based on a compounding size\n var _size = 0;\n\n for (var _i2 = 0; _i2 < numberOfFrames - 1; _i2++) {\n var vint = _i2 === 0 ? getvint(data, offset) : getvint(data, offset, true, true);\n _size += vint.value;\n frameSizes.push(_size);\n offset += vint.length;\n }\n }\n\n frameSizes.forEach(function (size) {\n parsed.frames.push(data.subarray(offset, offset + size));\n offset += size;\n });\n return parsed;\n}; // VP9 Codec Feature Metadata (CodecPrivate)\n// https://www.webmproject.org/docs/container/\n\nvar parseVp9Private = function parseVp9Private(bytes) {\n var i = 0;\n var params = {};\n\n while (i < bytes.length) {\n var id = bytes[i] & 0x7f;\n var len = bytes[i + 1];\n var val = void 0;\n\n if (len === 1) {\n val = bytes[i + 2];\n } else {\n val = bytes.subarray(i + 2, i + 2 + len);\n }\n\n if (id === 1) {\n params.profile = val;\n } else if (id === 2) {\n params.level = val;\n } else if (id === 3) {\n params.bitDepth = val;\n } else if (id === 4) {\n params.chromaSubsampling = val;\n } else {\n params[id] = val;\n }\n\n i += 2 + len;\n }\n\n return params;\n};\n\nexport var parseTracks = function parseTracks(bytes) {\n bytes = toUint8(bytes);\n var decodedTracks = [];\n var tracks = findEbml(bytes, [EBML_TAGS.Segment, EBML_TAGS.Tracks, EBML_TAGS.Track]);\n\n if (!tracks.length) {\n tracks = findEbml(bytes, [EBML_TAGS.Tracks, EBML_TAGS.Track]);\n }\n\n if (!tracks.length) {\n tracks = findEbml(bytes, [EBML_TAGS.Track]);\n }\n\n if (!tracks.length) {\n return decodedTracks;\n }\n\n tracks.forEach(function (track) {\n var trackType = findEbml(track, EBML_TAGS.TrackType)[0];\n\n if (!trackType || !trackType.length) {\n return;\n } // 1 is video, 2 is audio, 17 is subtitle\n // other values are unimportant in this context\n\n\n if (trackType[0] === 1) {\n trackType = 'video';\n } else if (trackType[0] === 2) {\n trackType = 'audio';\n } else if (trackType[0] === 17) {\n trackType = 'subtitle';\n } else {\n return;\n } // todo parse language\n\n\n var decodedTrack = {\n rawCodec: bytesToString(findEbml(track, [EBML_TAGS.CodecID])[0]),\n type: trackType,\n codecPrivate: findEbml(track, [EBML_TAGS.CodecPrivate])[0],\n number: bytesToNumber(findEbml(track, [EBML_TAGS.TrackNumber])[0]),\n defaultDuration: bytesToNumber(findEbml(track, [EBML_TAGS.DefaultDuration])[0]),\n default: findEbml(track, [EBML_TAGS.FlagDefault])[0],\n rawData: track\n };\n var codec = '';\n\n if (/V_MPEG4\\/ISO\\/AVC/.test(decodedTrack.rawCodec)) {\n codec = \"avc1.\" + getAvcCodec(decodedTrack.codecPrivate);\n } else if (/V_MPEGH\\/ISO\\/HEVC/.test(decodedTrack.rawCodec)) {\n codec = \"hev1.\" + getHvcCodec(decodedTrack.codecPrivate);\n } else if (/V_MPEG4\\/ISO\\/ASP/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n codec = 'mp4v.20.' + decodedTrack.codecPrivate[4].toString();\n } else {\n codec = 'mp4v.20.9';\n }\n } else if (/^V_THEORA/.test(decodedTrack.rawCodec)) {\n codec = 'theora';\n } else if (/^V_VP8/.test(decodedTrack.rawCodec)) {\n codec = 'vp8';\n } else if (/^V_VP9/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n var _parseVp9Private = parseVp9Private(decodedTrack.codecPrivate),\n profile = _parseVp9Private.profile,\n level = _parseVp9Private.level,\n bitDepth = _parseVp9Private.bitDepth,\n chromaSubsampling = _parseVp9Private.chromaSubsampling;\n\n codec = 'vp09.';\n codec += padStart(profile, 2, '0') + \".\";\n codec += padStart(level, 2, '0') + \".\";\n codec += padStart(bitDepth, 2, '0') + \".\";\n codec += \"\" + padStart(chromaSubsampling, 2, '0'); // Video -> Colour -> Ebml name\n\n var matrixCoefficients = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB1]])[0] || [];\n var videoFullRangeFlag = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB9]])[0] || [];\n var transferCharacteristics = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBA]])[0] || [];\n var colourPrimaries = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBB]])[0] || []; // if we find any optional codec parameter specify them all.\n\n if (matrixCoefficients.length || videoFullRangeFlag.length || transferCharacteristics.length || colourPrimaries.length) {\n codec += \".\" + padStart(colourPrimaries[0], 2, '0');\n codec += \".\" + padStart(transferCharacteristics[0], 2, '0');\n codec += \".\" + padStart(matrixCoefficients[0], 2, '0');\n codec += \".\" + padStart(videoFullRangeFlag[0], 2, '0');\n }\n } else {\n codec = 'vp9';\n }\n } else if (/^V_AV1/.test(decodedTrack.rawCodec)) {\n codec = \"av01.\" + getAv1Codec(decodedTrack.codecPrivate);\n } else if (/A_ALAC/.test(decodedTrack.rawCodec)) {\n codec = 'alac';\n } else if (/A_MPEG\\/L2/.test(decodedTrack.rawCodec)) {\n codec = 'mp2';\n } else if (/A_MPEG\\/L3/.test(decodedTrack.rawCodec)) {\n codec = 'mp3';\n } else if (/^A_AAC/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n codec = 'mp4a.40.' + (decodedTrack.codecPrivate[0] >>> 3).toString();\n } else {\n codec = 'mp4a.40.2';\n }\n } else if (/^A_AC3/.test(decodedTrack.rawCodec)) {\n codec = 'ac-3';\n } else if (/^A_PCM/.test(decodedTrack.rawCodec)) {\n codec = 'pcm';\n } else if (/^A_MS\\/ACM/.test(decodedTrack.rawCodec)) {\n codec = 'speex';\n } else if (/^A_EAC3/.test(decodedTrack.rawCodec)) {\n codec = 'ec-3';\n } else if (/^A_VORBIS/.test(decodedTrack.rawCodec)) {\n codec = 'vorbis';\n } else if (/^A_FLAC/.test(decodedTrack.rawCodec)) {\n codec = 'flac';\n } else if (/^A_OPUS/.test(decodedTrack.rawCodec)) {\n codec = 'opus';\n }\n\n decodedTrack.codec = codec;\n decodedTracks.push(decodedTrack);\n });\n return decodedTracks.sort(function (a, b) {\n return a.number - b.number;\n });\n};\nexport var parseData = function parseData(data, tracks) {\n var allBlocks = [];\n var segment = findEbml(data, [EBML_TAGS.Segment])[0];\n var timestampScale = findEbml(segment, [EBML_TAGS.SegmentInfo, EBML_TAGS.TimestampScale])[0]; // in nanoseconds, defaults to 1ms\n\n if (timestampScale && timestampScale.length) {\n timestampScale = bytesToNumber(timestampScale);\n } else {\n timestampScale = 1000000;\n }\n\n var clusters = findEbml(segment, [EBML_TAGS.Cluster]);\n\n if (!tracks) {\n tracks = parseTracks(segment);\n }\n\n clusters.forEach(function (cluster, ci) {\n var simpleBlocks = findEbml(cluster, [EBML_TAGS.SimpleBlock]).map(function (b) {\n return {\n type: 'simple',\n data: b\n };\n });\n var blockGroups = findEbml(cluster, [EBML_TAGS.BlockGroup]).map(function (b) {\n return {\n type: 'group',\n data: b\n };\n });\n var timestamp = findEbml(cluster, [EBML_TAGS.Timestamp])[0] || 0;\n\n if (timestamp && timestamp.length) {\n timestamp = bytesToNumber(timestamp);\n } // get all blocks then sort them into the correct order\n\n\n var blocks = simpleBlocks.concat(blockGroups).sort(function (a, b) {\n return a.data.byteOffset - b.data.byteOffset;\n });\n blocks.forEach(function (block, bi) {\n var decoded = decodeBlock(block.data, block.type, timestampScale, timestamp);\n allBlocks.push(decoded);\n });\n });\n return {\n tracks: tracks,\n blocks: allBlocks\n };\n};","import { bytesMatch, toUint8 } from './byte-helpers.js';\nexport var NAL_TYPE_ONE = toUint8([0x00, 0x00, 0x00, 0x01]);\nexport var NAL_TYPE_TWO = toUint8([0x00, 0x00, 0x01]);\nexport var EMULATION_PREVENTION = toUint8([0x00, 0x00, 0x03]);\n/**\n * Expunge any \"Emulation Prevention\" bytes from a \"Raw Byte\n * Sequence Payload\"\n *\n * @param data {Uint8Array} the bytes of a RBSP from a NAL\n * unit\n * @return {Uint8Array} the RBSP without any Emulation\n * Prevention Bytes\n */\n\nexport var discardEmulationPreventionBytes = function discardEmulationPreventionBytes(bytes) {\n var positions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < bytes.length - 2) {\n if (bytesMatch(bytes.subarray(i, i + 3), EMULATION_PREVENTION)) {\n positions.push(i + 2);\n i++;\n }\n\n i++;\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (positions.length === 0) {\n return bytes;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = bytes.length - positions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === positions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n positions.shift();\n }\n\n newData[i] = bytes[sourceIndex];\n }\n\n return newData;\n};\nexport var findNal = function findNal(bytes, dataType, types, nalLimit) {\n if (nalLimit === void 0) {\n nalLimit = Infinity;\n }\n\n bytes = toUint8(bytes);\n types = [].concat(types);\n var i = 0;\n var nalStart;\n var nalsFound = 0; // keep searching until:\n // we reach the end of bytes\n // we reach the maximum number of nals they want to seach\n // NOTE: that we disregard nalLimit when we have found the start\n // of the nal we want so that we can find the end of the nal we want.\n\n while (i < bytes.length && (nalsFound < nalLimit || nalStart)) {\n var nalOffset = void 0;\n\n if (bytesMatch(bytes.subarray(i), NAL_TYPE_ONE)) {\n nalOffset = 4;\n } else if (bytesMatch(bytes.subarray(i), NAL_TYPE_TWO)) {\n nalOffset = 3;\n } // we are unsynced,\n // find the next nal unit\n\n\n if (!nalOffset) {\n i++;\n continue;\n }\n\n nalsFound++;\n\n if (nalStart) {\n return discardEmulationPreventionBytes(bytes.subarray(nalStart, i));\n }\n\n var nalType = void 0;\n\n if (dataType === 'h264') {\n nalType = bytes[i + nalOffset] & 0x1f;\n } else if (dataType === 'h265') {\n nalType = bytes[i + nalOffset] >> 1 & 0x3f;\n }\n\n if (types.indexOf(nalType) !== -1) {\n nalStart = i + nalOffset;\n } // nal header is 1 length for h264, and 2 for h265\n\n\n i += nalOffset + (dataType === 'h264' ? 1 : 2);\n }\n\n return bytes.subarray(0, 0);\n};\nexport var findH264Nal = function findH264Nal(bytes, type, nalLimit) {\n return findNal(bytes, 'h264', type, nalLimit);\n};\nexport var findH265Nal = function findH265Nal(bytes, type, nalLimit) {\n return findNal(bytes, 'h265', type, nalLimit);\n};","import { toUint8, bytesMatch } from './byte-helpers.js';\nimport { findBox } from './mp4-helpers.js';\nimport { findEbml, EBML_TAGS } from './ebml-helpers.js';\nimport { getId3Offset } from './id3-helpers.js';\nimport { findH264Nal, findH265Nal } from './nal-helpers.js';\nvar CONSTANTS = {\n // \"webm\" string literal in hex\n 'webm': toUint8([0x77, 0x65, 0x62, 0x6d]),\n // \"matroska\" string literal in hex\n 'matroska': toUint8([0x6d, 0x61, 0x74, 0x72, 0x6f, 0x73, 0x6b, 0x61]),\n // \"fLaC\" string literal in hex\n 'flac': toUint8([0x66, 0x4c, 0x61, 0x43]),\n // \"OggS\" string literal in hex\n 'ogg': toUint8([0x4f, 0x67, 0x67, 0x53]),\n // ac-3 sync byte, also works for ec-3 as that is simply a codec\n // of ac-3\n 'ac3': toUint8([0x0b, 0x77]),\n // \"RIFF\" string literal in hex used for wav and avi\n 'riff': toUint8([0x52, 0x49, 0x46, 0x46]),\n // \"AVI\" string literal in hex\n 'avi': toUint8([0x41, 0x56, 0x49]),\n // \"WAVE\" string literal in hex\n 'wav': toUint8([0x57, 0x41, 0x56, 0x45]),\n // \"ftyp3g\" string literal in hex\n '3gp': toUint8([0x66, 0x74, 0x79, 0x70, 0x33, 0x67]),\n // \"ftyp\" string literal in hex\n 'mp4': toUint8([0x66, 0x74, 0x79, 0x70]),\n // \"styp\" string literal in hex\n 'fmp4': toUint8([0x73, 0x74, 0x79, 0x70]),\n // \"ftyp\" string literal in hex\n 'mov': toUint8([0x66, 0x74, 0x79, 0x70, 0x71, 0x74])\n};\nvar _isLikely = {\n aac: function aac(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, [0xFF, 0x10], {\n offset: offset,\n mask: [0xFF, 0x16]\n });\n },\n mp3: function mp3(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, [0xFF, 0x02], {\n offset: offset,\n mask: [0xFF, 0x06]\n });\n },\n webm: function webm(bytes) {\n var docType = findEbml(bytes, [EBML_TAGS.EBML, EBML_TAGS.DocType])[0]; // check if DocType EBML tag is webm\n\n return bytesMatch(docType, CONSTANTS.webm);\n },\n mkv: function mkv(bytes) {\n var docType = findEbml(bytes, [EBML_TAGS.EBML, EBML_TAGS.DocType])[0]; // check if DocType EBML tag is matroska\n\n return bytesMatch(docType, CONSTANTS.matroska);\n },\n mp4: function mp4(bytes) {\n return !_isLikely['3gp'](bytes) && !_isLikely.mov(bytes) && (bytesMatch(bytes, CONSTANTS.mp4, {\n offset: 4\n }) || bytesMatch(bytes, CONSTANTS.fmp4, {\n offset: 4\n }));\n },\n mov: function mov(bytes) {\n return bytesMatch(bytes, CONSTANTS.mov, {\n offset: 4\n });\n },\n '3gp': function gp(bytes) {\n return bytesMatch(bytes, CONSTANTS['3gp'], {\n offset: 4\n });\n },\n ac3: function ac3(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, CONSTANTS.ac3, {\n offset: offset\n });\n },\n ts: function ts(bytes) {\n if (bytes.length < 189 && bytes.length >= 1) {\n return bytes[0] === 0x47;\n }\n\n var i = 0; // check the first 376 bytes for two matching sync bytes\n\n while (i + 188 < bytes.length && i < 188) {\n if (bytes[i] === 0x47 && bytes[i + 188] === 0x47) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n flac: function flac(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, CONSTANTS.flac, {\n offset: offset\n });\n },\n ogg: function ogg(bytes) {\n return bytesMatch(bytes, CONSTANTS.ogg);\n },\n avi: function avi(bytes) {\n return bytesMatch(bytes, CONSTANTS.riff) && bytesMatch(bytes, CONSTANTS.avi, {\n offset: 8\n });\n },\n wav: function wav(bytes) {\n return bytesMatch(bytes, CONSTANTS.riff) && bytesMatch(bytes, CONSTANTS.wav, {\n offset: 8\n });\n },\n 'h264': function h264(bytes) {\n // find seq_parameter_set_rbsp\n return findH264Nal(bytes, 7, 3).length;\n },\n 'h265': function h265(bytes) {\n // find video_parameter_set_rbsp or seq_parameter_set_rbsp\n return findH265Nal(bytes, [32, 33], 3).length;\n }\n}; // get all the isLikely functions\n// but make sure 'ts' is above h264 and h265\n// but below everything else as it is the least specific\n\nvar isLikelyTypes = Object.keys(_isLikely) // remove ts, h264, h265\n.filter(function (t) {\n return t !== 'ts' && t !== 'h264' && t !== 'h265';\n}) // add it back to the bottom\n.concat(['ts', 'h264', 'h265']); // make sure we are dealing with uint8 data.\n\nisLikelyTypes.forEach(function (type) {\n var isLikelyFn = _isLikely[type];\n\n _isLikely[type] = function (bytes) {\n return isLikelyFn(toUint8(bytes));\n };\n}); // export after wrapping\n\nexport var isLikely = _isLikely; // A useful list of file signatures can be found here\n// https://en.wikipedia.org/wiki/List_of_file_signatures\n\nexport var detectContainerForBytes = function detectContainerForBytes(bytes) {\n bytes = toUint8(bytes);\n\n for (var i = 0; i < isLikelyTypes.length; i++) {\n var type = isLikelyTypes[i];\n\n if (isLikely[type](bytes)) {\n return type;\n }\n }\n\n return '';\n}; // fmp4 is not a container\n\nexport var isLikelyFmp4MediaSegment = function isLikelyFmp4MediaSegment(bytes) {\n return findBox(bytes, ['moof']).length > 0;\n};","/**\n * @license\n * Video.js 7.13.3 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window from 'global/window';\nimport document from 'global/document';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport keycode from 'keycode';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _construct from '@babel/runtime/helpers/construct';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { browserSupportsCodec, DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, muxerSupportsCodec, parseCodecs, translateLegacyCodec, codecsFromDefault, getMimeForCodec, isAudioCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\n\nvar version$5 = \"7.13.3\";\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\n\nvar FullscreenApi = {\n prefixed: true\n}; // browser API methods\n\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']];\nvar specApi = apiMap[0];\nvar browserApi; // determine the supported set of functions\n\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n} // map the browser API names to the spec API names\n\n\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window.console) {\n return;\n } // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n\n\n var fn = window.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window.console.info || window.console.log;\n } // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n\n\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n fn[Array.isArray(args) ? 'apply' : 'call'](window.console, args);\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log$1 = createLogger$1('VIDEOJS');\nvar createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends.apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window.navigator && window.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window || window.navigator.maxTouchPoints || window.DocumentTouch && window.document instanceof window.DocumentTouch));\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document === window.document;\n}\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\n\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\n\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window.parent !== window.self;\n } catch (x) {\n return true;\n }\n}\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\n\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n return ctx[method] && ctx[method](selector);\n };\n}\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName]; // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log$1.warn('Setting attributes in the second argument of createEl()\\n' + 'has been deprecated. Use the third argument instead.\\n' + (\"createEl(type, properties, attributes). Attempting to set \" + propName + \" to \" + val + \".\"));\n el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document.body.focus();\n\n document.onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var left = 0;\n var top = 0;\n\n while (el.offsetParent && el !== document[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top,\n width: width,\n height: height\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var translated = {\n x: 0,\n y: 0\n };\n\n if (IS_IOS) {\n var item = el;\n\n while (item && item.nodeName.toLowerCase() !== 'html') {\n var transform = computedStyle(item, 'transform');\n\n if (/^matrix/.test(transform)) {\n var values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n var _values = transform.slice(9, -1).split(/,\\s/).map(Number);\n\n translated.x += _values[12];\n translated.y += _values[13];\n }\n\n item = item.parentNode;\n }\n }\n\n var position = {};\n var boxTarget = findPosition(event.target);\n var box = findPosition(el);\n var boxW = box.width;\n var boxH = box.height;\n var offsetY = event.offsetY - (box.top - boxTarget.top);\n var offsetX = event.offsetX - (box.left - boxTarget.left);\n\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$1;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n\n if (vjs) {\n videojs$1 = vjs;\n }\n\n window.setTimeout(autoSetup, wait);\n}\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\n\n\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window.removeEventListener('load', setWindowLoaded);\n}\n\nif (isReal()) {\n if (document.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\n\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n style.className = className;\n return style;\n};\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\n\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window.performance && window.performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log$1('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\n\n\nvar DomData = window.WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\n\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n\n\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n event = {}; // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document;\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n window.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n } // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window.performance.now();\n\n var throttled = function throttled() {\n var now = window.performance.now();\n\n if (now - last >= wait) {\n fn.apply(void 0, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\n\nvar debounce = function debounce(func, wait, immediate, context) {\n if (context === void 0) {\n context = window;\n }\n\n var timeout;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n /* eslint-disable consistent-this */\n\n\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n\n debounced.cancel = cancel;\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\n\nvar EventTarget$2 = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget$2.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget$2.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget$2.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget$2.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget$2.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget$2.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget$2.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window.clearTimeout(oldTimeout);\n var timeout = window.setTimeout(function () {\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n\nvar objName = function objName(obj) {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n\n if (obj.name_) {\n return obj.name_;\n }\n\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n\n return typeof obj;\n};\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateTarget = function validateTarget(target, obj, fnName) {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(\"Invalid target for \" + objName(obj) + \"#\" + fnName + \"; must be a DOM node or evented object.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateEventType = function validateEventType(type, obj, fnName) {\n if (!isValidEventType(type)) {\n throw new Error(\"Invalid event type for \" + objName(obj) + \"#\" + fnName + \"; must be a non-empty string or array.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateListener = function validateListener(listener, obj, fnName) {\n if (typeof listener !== 'function') {\n throw new Error(\"Invalid listener for \" + objName(obj) + \"#\" + fnName + \"; must be a function.\");\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args, fnName) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target, target, method);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args, 'on'),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args, 'one'),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args, 'any'),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off'); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n var type = event && typeof event !== 'string' ? event.type : event;\n\n if (!isValidEventType(type)) {\n var error = \"Invalid event type for \" + objName(this) + \"#trigger; \" + 'must be a non-empty string or object with a type key that has a non-empty value.';\n\n if (event) {\n (this.log || log$1).error(error);\n } else {\n throw new Error(error);\n }\n }\n\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n window.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\n\nvar StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes;\n each(stateUpdates, function (value, key) {\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n }); // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\n\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n\n target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists.\n\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file string-cases.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nvar toLowerCase = function toLowerCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toLowerCase();\n });\n};\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\n\nvar toTitleCase$1 = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions$3() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions$3(result[key], value);\n });\n });\n return result;\n}\n\nvar MapSham = /*#__PURE__*/function () {\n function MapSham() {\n this.map_ = {};\n }\n\n var _proto = MapSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.map_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.map_[key];\n return has;\n };\n\n _proto.set = function set(key, value) {\n this.map_[key] = value;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.map_) {\n callback.call(thisArg, this.map_[key], key, this);\n }\n };\n\n return MapSham;\n}();\n\nvar Map$1 = window.Map ? window.Map : MapSham;\n\nvar SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto = SetSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.set_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n}();\n\nvar Set = window.Set ? window.Set : SetSham;\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component$1 = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions$3({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions$3(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set();\n this.setIntervalIds_ = new Set();\n this.rafIds_ = new Set();\n this.namedRafs_ = new Map$1();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n } // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n\n\n this.ready(ready);\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose() {\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n if (DomData.has(this.el_)) {\n DomData[\"delete\"](this.el_);\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions$3(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Handles language change for the player in components. Should be overriden by sub-components.\n *\n * @abstract\n */\n ;\n\n _proto.handleLanguagechange = function handleLanguagechange() {}\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase$1(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts; // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n } // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n\n\n if (opts === false) {\n return;\n } // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n\n\n if (opts === true) {\n opts = {};\n } // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n\n\n opts.playerOptions = _this.options_.playerOptions; // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n\n var newChild = _this.addChild(name, opts);\n\n if (newChild) {\n _this[name] = newChild;\n }\n }; // Allow for an array of children details to passed in the options\n\n\n var workingChildren;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n\n return child === wchild.name;\n });\n })).map(function (child) {\n var name;\n var opts;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n } // Check if using css width/height (% or px) and adjust\n\n\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n } // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n\n\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase$1(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser.\n event.stopPropagation();\n this.player_.handleKeyDown(event);\n }\n }\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyPress = function handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n ;\n\n _proto.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null; // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n\n var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap\n\n var touchTimeThreshold = 200;\n var couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }; // Record start time so we can detect a tap vs. \"touch and hold\"\n\n touchStart = window.performance.now(); // Reset couldBeTap tracking\n\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n\n\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate\n // event\n\n this.on('touchend', function (event) {\n firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen\n\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = window.performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap\n\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n\n this.trigger('tap'); // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n ;\n\n _proto.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n } // listener for reporting that the user is active\n\n\n var report = bind(this.player(), this.player().reportUserActivity);\n var touchHolding;\n this.on('touchstart', function () {\n report(); // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n\n this.clearInterval(touchHolding); // report at the same interval as activityCheck\n\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report(); // stop the interval that maintains activity if the touch is holding\n\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n ;\n\n _proto.setTimeout = function setTimeout(fn, timeout) {\n var _this2 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window.setTimeout(function () {\n if (_this2.setTimeoutIds_.has(timeoutId)) {\n _this2.setTimeoutIds_[\"delete\"](timeoutId);\n }\n\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n ;\n\n _proto.clearTimeout = function clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_[\"delete\"](timeoutId);\n window.clearTimeout(timeoutId);\n }\n\n return timeoutId;\n }\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n ;\n\n _proto.setInterval = function setInterval(fn, interval) {\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n var intervalId = window.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n ;\n\n _proto.clearInterval = function clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_[\"delete\"](intervalId);\n window.clearInterval(intervalId);\n }\n\n return intervalId;\n }\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n ;\n\n _proto.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this3 = this;\n\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.setTimeout(fn, 1000 / 60);\n }\n\n this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n\n var id;\n fn = bind(this, fn);\n id = window.requestAnimationFrame(function () {\n if (_this3.rafIds_.has(id)) {\n _this3.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n ;\n\n _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) {\n var _this4 = this;\n\n if (this.namedRafs_.has(name)) {\n return;\n }\n\n this.clearTimersOnDispose_();\n fn = bind(this, fn);\n var id = this.requestAnimationFrame(function () {\n fn();\n\n if (_this4.namedRafs_.has(name)) {\n _this4.namedRafs_[\"delete\"](name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n ;\n\n _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_[\"delete\"](name);\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window.cancelAnimationFrame(id);\n }\n\n return id;\n }\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n ;\n\n _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() {\n var _this5 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n _this5[idName].forEach(function (val, key) {\n return _this5[cancelName](key);\n });\n });\n _this5.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase$1(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n *\n * @deprecated In `videojs` 6 this will not return `Component`s that were not\n * registered using {@link Component.registerComponent}. Currently we\n * check the global `videojs` object for a `Component` name and\n * return that if it exists.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent$1.prototype.supportsRaf_ = typeof window.requestAnimationFrame === 'function' && typeof window.cancelAnimationFrame === 'function';\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time-ranges~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time-ranges~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(\"Failed to execute '\" + fnName + \"' on 'TimeRanges': The index provided (\" + index + \") is non-numeric or out of bounds (0-\" + maxIndex + \").\");\n }\n}\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\n\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n */\n\n\nfunction createTimeRangesObj(ranges) {\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n\n _this.handleKeyDown_ = function (e) {\n return _this.handleKeyDown(e);\n };\n\n _this.close_ = function (e) {\n return _this.close(e);\n };\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown_); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown_);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode.isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode.isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window.HTMLAnchorElement || child instanceof window.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window.HTMLInputElement || child instanceof window.HTMLSelectElement || child instanceof window.HTMLTextAreaElement || child instanceof window.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window.HTMLIFrameElement || child instanceof window.HTMLObjectElement || child instanceof window.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component$1);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n\n track.labelchange_ = function () {\n _this2.trigger({\n track: track,\n type: 'labelchange',\n target: _this2\n });\n };\n\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget$2);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n var label = options.label || '';\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized(_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'label', {\n get: function get() {\n return label;\n },\n set: function set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('labelchange');\n }\n }\n });\n return _this;\n }\n\n return Track;\n}(EventTarget$2);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL\n\n var a = document.createElement('a');\n a.href = url; // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n\n var addToBody = a.host === '' && a.protocol !== 'file:';\n var div;\n\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = \"\";\n a = div.firstChild; // prevent the div from affecting layout\n\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n } // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n\n\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window.location.protocol;\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n/**\n * Get absolute version of relative URL. Used to tell Flash the correct URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\n\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n var div = document.createElement('div');\n div.innerHTML = \"x\";\n url = div.firstChild.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window.location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n\n if (errors.length > 0) {\n if (window.console && window.console.groupCollapsed) {\n window.console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log$1.error(error);\n });\n\n if (window.console && window.console.groupEnd) {\n window.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\n\n\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n var withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n\n XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) {\n if (event.type === 'vttjserror') {\n log$1.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions$3(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n var timeupdateHandler = bind(_assertThisInitialized(_this), function () {\n if (!this.tech_.isReady_ || this.tech_.isDisposed()) {\n return;\n } // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n\n\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.tech_.off('timeupdate', timeupdateHandler);\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n if (mode === newMode) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n this.tech_.off('timeupdate', timeupdateHandler);\n\n if (mode !== 'disabled') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized(_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n\n\n var _proto = TextTrack.prototype;\n\n _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window.vttjs && !(originalCue instanceof window.vttjs.VTTCue)) {\n cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n } // make sure that `id` is copied over\n\n\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n ;\n\n _proto.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized(_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget$2);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this;\n\n _this.onDurationChange_ = function (e) {\n return _this.onDurationChange(e);\n };\n\n _this.trackProgress_ = function (e) {\n return _this.trackProgress(e);\n };\n\n _this.trackCurrentTime_ = function (e) {\n return _this.trackCurrentTime(e);\n };\n\n _this.stopTrackingCurrentTime_ = function (e) {\n return _this.stopTrackingCurrentTime(e);\n };\n\n _this.disposeSourceHandler_ = function (e) {\n return _this.disposeSourceHandler(e);\n }; // keep track of whether the current source has played at all to\n // implement a very limited played()\n\n\n _this.hasStarted_ = false;\n\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n }); // Manually track progress in cases where the browser/tech doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/tech doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n ;\n\n _proto.crossOrigin = function crossOrigin() {}\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n ;\n\n _proto.setCrossOrigin = function setCrossOrigin() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n ;\n\n _proto.play = function play() {}\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#setScrubbing}\n */\n ;\n\n _proto.setScrubbing = function setScrubbing() {}\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n ;\n\n _proto.scrubbing = function scrubbing() {}\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window.WebVTT) {\n return;\n } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n\n\n if (document.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n } // load vtt.js via the script location option or the cdn of no location was\n // passed in\n\n\n var script = document.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n }); // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n\n window.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n /**\n * Emulate texttracks\n *\n */\n ;\n\n _proto.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n ;\n\n _proto.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n ;\n\n _proto.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions$3(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log$1.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'