{"version":3,"sources":["../../node_modules/global/window.js","../../node_modules/global/document.js","../../node_modules/safe-json-parse/tuple.js","../../node_modules/keycode/index.js","../../node_modules/is-function/index.js","../../node_modules/function-bind/implementation.js","../../node_modules/object-keys/implementation.js","../../node_modules/function-bind/index.js","../../node_modules/object-keys/isArguments.js","../../node_modules/object-keys/index.js","../../node_modules/define-properties/index.js","../../node_modules/es-abstract/GetIntrinsic.js","../../node_modules/has/src/index.js","../../node_modules/es-abstract/helpers/assertRecord.js","../../node_modules/es-abstract/helpers/isNaN.js","../../node_modules/es-abstract/helpers/isFinite.js","../../node_modules/es-abstract/helpers/sign.js","../../node_modules/is-callable/index.js","../../node_modules/es-to-primitive/helpers/isPrimitive.js","../../node_modules/es-to-primitive/es5.js","../../node_modules/es-abstract/es5.js","../../node_modules/es-abstract/helpers/mod.js","../../node_modules/string.prototype.trim/implementation.js","../../node_modules/string.prototype.trim/polyfill.js","../../node_modules/string.prototype.trim/index.js","../../node_modules/string.prototype.trim/shim.js","../../node_modules/for-each/index.js","../../node_modules/parse-headers/parse-headers.js","../../node_modules/xtend/immutable.js","../../node_modules/xhr/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/videojs-vtt.js/lib/browser-index.js","../../node_modules/url-toolkit/src/url-toolkit.js","../../node_modules/m3u8-parser/dist/m3u8-parser.es.js","../../node_modules/mpd-parser/dist/mpd-parser.es.js","../../node_modules/mux.js/lib/mp4/probe.js","../../node_modules/mux.js/lib/utils/bin.js","../../node_modules/mux.js/lib/tools/mp4-inspector.js","../../node_modules/mux.js/lib/tools/caption-packet-parser.js","../../node_modules/mux.js/lib/utils/stream.js","../../node_modules/mux.js/lib/m2ts/caption-stream.js","../../node_modules/mux.js/lib/mp4/caption-parser.js","../../node_modules/mux.js/lib/m2ts/stream-types.js","../../node_modules/mux.js/lib/m2ts/timestamp-rollover-stream.js","../../node_modules/mux.js/lib/utils/clock.js","../../node_modules/mux.js/lib/m2ts/probe.js","../../node_modules/mux.js/lib/aac/utils.js","../../node_modules/mux.js/lib/tools/ts-inspector.js","../../node_modules/aes-decrypter/dist/aes-decrypter.es.js","../../node_modules/pkcs7/dist/pkcs7.es.js","../../node_modules/video.js/dist/video.es.js","../../node_modules/uikit/dist/js/uikit-icons.js","../../node_modules/gsap/TweenLite.js","../../node_modules/gsap/TweenMaxBase.js","../../node_modules/gsap/CSSPlugin.js","../../node_modules/gsap/AttrPlugin.js","../../node_modules/gsap/RoundPropsPlugin.js","../../node_modules/gsap/DirectionalRotationPlugin.js","../../node_modules/gsap/TimelineLite.js","../../node_modules/gsap/TimelineMax.js","../../node_modules/gsap/BezierPlugin.js","../../node_modules/gsap/EasePack.js","../../node_modules/gsap/TweenMax.js","../../node_modules/countup.js/dist/countUp.min.js","../../source/js/_video-player.js","../../source/js/deferred.js"],"names":["doccy","window_1","window","global","self","topLevel","document","minDoc","document_1","tuple","obj","reviver","json","error","JSON","parse","err","keyCode","searchInput","hasKeyCode","which","charCode","names","foundNamedKey","search","String","codes","toLowerCase","aliases","length","charCodeAt","undefined","isEventKey","event","nameOrCode","exports","module","code","backspace","tab","enter","shift","ctrl","alt","pause/break","caps lock","esc","space","page up","page down","end","home","left","up","right","down","insert","delete","command","left command","right command","numpad *","numpad +","numpad -","numpad .","numpad /","num lock","scroll lock","my computer","my calculator",";","=",",","-",".","/","`","[","\\","]","'","windows","⇧","⌥","⌃","⌘","ctl","control","option","pause","break","caps","return","escape","spc","spacebar","pgup","pgdn","ins","del","cmd","i","fromCharCode","title","alias","isFunction_1","fn","string","toString","call","setTimeout","alert","confirm","prompt","Object","prototype","keysShim","ERROR_MESSAGE","slice","Array","toStr","functionBind","Function","bind","that","target","this","TypeError","bound","args","arguments","binder","result","apply","concat","boundLength","Math","max","boundArgs","push","join","Empty","isArguments","value","str","isArgs","callee","keys","has","hasOwnProperty","require$$0","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","ctor","constructor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","k","e","object","isObject","isFunction","isString","theKeys","skipProto","j","name","skipConstructor","equalsConstructorPrototypeIfNotBuggy","implementation$1","origKeys","originalKeys","shim","objectKeys","hasSymbols","Symbol","origDefineProperty","defineProperty","supportsDescriptors","_","enumerable","x","arePropertyDescriptorsSupported","predicate","configurable","writable","defineProperties","map","predicates","props","getOwnPropertySymbols","defineProperties_1","ThrowTypeError","getOwnPropertyDescriptor","get","iterator","getProto","getPrototypeOf","__proto__","TypedArray","Uint8Array","INTRINSICS","$ %Array%","$ %ArrayBuffer%","ArrayBuffer","$ %ArrayBufferPrototype%","$ %ArrayIteratorPrototype%","$ %ArrayPrototype%","$ %ArrayProto_entries%","entries","$ %ArrayProto_forEach%","forEach","$ %ArrayProto_keys%","$ %ArrayProto_values%","values","$ %AsyncFromSyncIteratorPrototype%","$ %AsyncFunction%","$ %AsyncFunctionPrototype%","$ %AsyncGenerator%","$ %AsyncGeneratorFunction%","$ %AsyncGeneratorPrototype%","$ %AsyncIteratorPrototype%","$ %Atomics%","Atomics","$ %Boolean%","Boolean","$ %BooleanPrototype%","$ %DataView%","DataView","$ %DataViewPrototype%","$ %Date%","Date","$ %DatePrototype%","$ %decodeURI%","decodeURI","$ %decodeURIComponent%","decodeURIComponent","$ %encodeURI%","encodeURI","$ %encodeURIComponent%","encodeURIComponent","$ %Error%","Error","$ %ErrorPrototype%","$ %eval%","eval","$ %EvalError%","EvalError","$ %EvalErrorPrototype%","$ %Float32Array%","Float32Array","$ %Float32ArrayPrototype%","$ %Float64Array%","Float64Array","$ %Float64ArrayPrototype%","$ %Function%","$ %FunctionPrototype%","$ %Generator%","$ %GeneratorFunction%","$ %GeneratorPrototype%","$ %Int8Array%","Int8Array","$ %Int8ArrayPrototype%","$ %Int16Array%","Int16Array","$ %Int16ArrayPrototype%","$ %Int32Array%","Int32Array","$ %Int32ArrayPrototype%","$ %isFinite%","isFinite","$ %isNaN%","isNaN","$ %IteratorPrototype%","$ %JSON%","$ %JSONParse%","$ %Map%","Map","$ %MapIteratorPrototype%","$ %MapPrototype%","$ %Math%","$ %Number%","Number","$ %NumberPrototype%","$ %Object%","$ %ObjectPrototype%","$ %ObjProto_toString%","$ %ObjProto_valueOf%","valueOf","$ %parseFloat%","parseFloat","$ %parseInt%","parseInt","$ %Promise%","Promise","$ %PromisePrototype%","$ %PromiseProto_then%","then","$ %Promise_all%","all","$ %Promise_reject%","reject","$ %Promise_resolve%","resolve","$ %Proxy%","Proxy","$ %RangeError%","RangeError","$ %RangeErrorPrototype%","$ %ReferenceError%","ReferenceError","$ %ReferenceErrorPrototype%","$ %Reflect%","Reflect","$ %RegExp%","RegExp","$ %RegExpPrototype%","$ %Set%","Set","$ %SetIteratorPrototype%","$ %SetPrototype%","$ %SharedArrayBuffer%","SharedArrayBuffer","$ %SharedArrayBufferPrototype%","$ %String%","$ %StringIteratorPrototype%","$ %StringPrototype%","$ %Symbol%","$ %SymbolPrototype%","$ %SyntaxError%","SyntaxError","$ %SyntaxErrorPrototype%","$ %ThrowTypeError%","$ %TypedArray%","$ %TypedArrayPrototype%","$ %TypeError%","$ %TypeErrorPrototype%","$ %Uint8Array%","$ %Uint8ArrayPrototype%","$ %Uint8ClampedArray%","Uint8ClampedArray","$ %Uint8ClampedArrayPrototype%","$ %Uint16Array%","Uint16Array","$ %Uint16ArrayPrototype%","$ %Uint32Array%","Uint32Array","$ %Uint32ArrayPrototype%","$ %URIError%","URIError","$ %URIErrorPrototype%","$ %WeakMap%","WeakMap","$ %WeakMapPrototype%","$ %WeakSet%","WeakSet","$ %WeakSetPrototype%","GetIntrinsic","allowMissing","key","src","$TypeError","$SyntaxError","Property Descriptor","ES","Desc","Type","allowed","[[Configurable]]","[[Enumerable]]","[[Get]]","[[Set]]","[[Value]]","[[Writable]]","isData","IsAccessor","assertRecord","recordType","argumentName","console","log","_isNaN","a","$isNaN","_isFinite","Infinity","sign","number","fnToStr","constructorRegex","isES6ClassFn","fnStr","test","hasToStringTag","toStringTag","isCallable","tryFunctionObject","strClass","isPrimitive","ES5internalSlots","O","actualHint","methods","$Object","$String","es5$1","ToPrimitive","input","ToBoolean","ToNumber","ToInteger","$isFinite","floor","abs","ToInt32","ToUint32","ToUint16","modulo","remain","mod","ToString","ToObject","CheckObjectCoercible","optMessage","IsCallable","SameValue","y","IsPropertyDescriptor","IsAccessorDescriptor","IsDataDescriptor","IsGenericDescriptor","FromPropertyDescriptor","set","ToPropertyDescriptor","Obj","desc","getter","setter","replace","leftWhitespace","rightWhitespace","implementation$2","S","polyfill","trim","implementation","boundTrim","getPolyfill","define","string_prototype_trim","forEachArray","array","receiver","len","forEachString","charAt","forEachObject","forEach_1","list","thisArg","parseHeaders","headers","split","row","arg","index","indexOf","immutable","source","xhr","createXHR","initParams","uri","options","callback","params","xtend","_createXHR","called","response","body","getBody","responseText","responseType","responseXML","firefoxBugTakenEffect","documentElement","nodeName","getXml","isJson","errorFunc","evt","clearTimeout","timeoutTimer","statusCode","failureResponse","loadFunc","aborted","status","useXDR","method","url","rawRequest","getAllResponseHeaders","cors","XDomainRequest","XMLHttpRequest","data","sync","stringify","onreadystatechange","readyState","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","isEmpty","beforeSend","send","toUpperCase","_objCreate","create","F","ParsingError","errorData","message","parseTimeStamp","computeSeconds","h","m","s","f","match","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","cue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","skipWhitespace","startTime","substr","endTime","settings","v","id","region","vals","vals0","integer","percent","vertical","line","lineAlign","snapToLines","size","align","position","start","middle","positionAlign","consumeCueSettings","BadSignature","dflt","defaultKey","n","ESCAPE","&","<",">","‎","‏"," ","TAG_NAME","c","b","u","ruby","rt","lang","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","unescape1","unescape","shouldAdd","current","element","localName","createElement","type","annotation","tagName","t","rootDiv","tagStack","appendChild","createTextNode","pop","parentNode","node","createProcessingInstruction","className","strongRTLRanges","isStrongRTLChar","currentRange","determineBidi","cueDiv","nodeStack","text","childNodes","pushNodes","nextTextNode","textContent","innerText","StyleBox","CueStyleBox","styleOptions","styles","color","backgroundColor","top","bottom","display","writingMode","unicodeBidi","applyStyles","div","direction","textAlign","font","whiteSpace","textPos","formatStyle","width","height","move","box","BoxPosition","lh","offsetHeight","offsetWidth","offsetTop","rects","getClientRects","getBoundingClientRect","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","boxPosition","linePos","track","textTrackList","mediaElement","trackList","count","mode","computeLinePos","axis","step","round","maxPosition","initialAxis","ceil","reverse","calculatedPercentage","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","p","intersectPercentage","findBestPosition","toCSSCompatValues","WebVTT","prop","style","val","unit","toMove","overlaps","b2","boxes","container","min","reference","getSimpleBoxPosition","StringDecoder","decode","convertCueToDOMTree","cuetext","processCues","cues","overlay","firstChild","removeChild","paddedOverlay","margin","hasBeenReset","displayState","shouldCompute","Parser","vttjs","decoder","state","buffer","TextDecoder","reportOrThrowError","onparsingerror","collectNextLine","pos","parseHeader","ontimestampmap","MPEGTS","LOCAL","parseTimestampMap","xy","anchor","VTTRegion","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseRegion","stream","alreadyCollectedLine","VTTCue","hasSubstring","oncue","flush","onflush","vtt","autoKeyword","directionSetting","","lr","rl","alignSetting","findAlignSetting","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","pauseOnExit","setting","findDirectionSetting","getCueAsHTML","vttcue","scrollSetting","isValidPercentValue","vttregion","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","findScrollSetting","require$$1","require$$2","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","restore","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","buildAbsoluteURL","baseURL","relativeURL","opts","alwaysNormalize","basePartsForNormalise","parseURL","path","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","exec","builtParts","query","fragment","baseURLPath","newPath","substring","lastIndexOf","parts","_extends","assign","_inheritsLoose","subClass","superClass","Stream","listeners","_proto","on","listener","off","splice","trigger","callbacks","dispose","pipe","destination","LineStream","_Stream","_this","nextNewline","parseAttributes","attributes","attr","attrs","ParseStream","customParsers","tagMappers","_this2","reduce","acc","mapper","mappedLine","newLine","tagType","duration","version","playlistType","offset","URI","BYTERANGE","_attributes$BYTERANGE","byterange","RESOLUTION","resolution","BANDWIDTH","dateTimeString","dateTimeObject","IV","PRECISE","addParser","_ref","_this3","expression","customType","dataParser","segment","addTagMapper","_ref2","decodeB64ToUint8Array","b64Text","decodedString","atob","lineStream","parseStream","currentMap","_key","_assertThisInitialized","uris","currentUri","defaultMediaGroups","AUDIO","VIDEO","CLOSED-CAPTIONS","SUBTITLES","currentTimeline","manifest","allowCache","discontinuityStarts","segments","entry","mediaGroup","rendition","tag","allow-cache","endlist","endList","inf","mediaSequence","discontinuitySequence","METHOD","KEYFORMAT","KEYID","contentProtection","com.widevine.alpha","schemeIdUri","keyId","pssh","iv","media-sequence","discontinuity-sequence","playlist-type","playlist","stream-inf","playlists","mediaGroups","media","TYPE","NAME","mediaGroupType","default","DEFAULT","autoselect","AUTOSELECT","LANGUAGE","language","instreamId","CHARACTERISTICS","characteristics","FORCED","forced","discontinuity","program-date-time","targetduration","targetDuration","totalduration","totalDuration","timeOffset","precise","cue-out","cueOut","cue-out-cont","cueOutCont","cue-in","cueIn","timeline","comment","custom","chunk","merge","_len","objects","isArray","flatten","lists","from","errors","urlToolkit","createCommonjsModule","resolveUrl","baseUrl","relativeUrl","window$1","location","href","urlTypeToSegment","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","resolvedUri","ranges","startRange","endRange","segmentRange","static","_attributes$timescale","timescale","sourceDuration","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$start","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","now","periodStartWC","periodDuration","segmentCount","availableStart","availableEnd","parseByDuration","_attributes$type","_attributes$timescale4","_segmentRange$type","_attributes$timescale3","periodIndex","_attributes$startNumb","startNumber","time","toSegments","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","initSegment","sourceURL","segmentTimeInfo","addSegmentsToPlaylist","sidx","sidxByteRange","sidxEnd","mediaReferences","references","filter","r","referenceType","startIndex","firstOffset","referencedSize","subsegmentDuration","mergeDiscontiguousPlaylists","_acc$name$segments","l","addSegmentInfoFromSidx","sidxMapping","sidxKey","sidxMatch","formatAudioPlaylist","_attributes","bandwidth","CODECS","codecs","formatVideoPlaylist","_ref3","_attributes3","toM3u8","dashPlaylists","_mediaGroups","_dashPlaylists$0$attr","_dashPlaylists$0$attr2","videoPlaylists","_ref4","mimeType","contentType","audioPlaylists","_ref5","vttPlaylists","_ref6","master","audio","mainPlaylist","formattedPlaylists","role","label","roleLabel","organizeAudioPlaylists","subs","_attributes2","organizeVttPlaylists","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","sIndex","d","repeat","segmentTime","nextS","identifierPattern","constructTemplateUrl","identifier","format","identifierReplacement","segmentsFromTemplate","templateValues","RepresentationID","Bandwidth","mapSegment","parseTemplateInfo","Time","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","segmentUrl","mediaRange","SegmentURLToSegmentObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","findChildren","getContent","parseDuration","_match$slice","year","month","day","hour","minute","second","parsers","mediaPresentationDuration","parsedValue","el","parseFn","findBox","parseType","getVideoTrackIds","getTracks","keySystemsMap","urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed","urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95","urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb","buildBaseUrls","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","generateKeySystemInformation","contentProtectionNodes","keySystem","psshNode","psshBuffer","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","adaptationSetAttributes","adaptationSetBaseUrls","roleAttributes","representations","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","inheritBaseUrls","inheritAttributes","mpd","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periods","mpdAttributes","mpdBaseUrls","period","periodAtt","parsedPeriodId","adaptationSets","toAdaptationSets","stringToMpdXml","manifestString","xml","DOMParser","parseFromString","getElementsByTagName","parseUTCTiming","UTCTimingNode","parseUTCTimingScheme","toUnsigned","toHexString","init","trak","tkhd","mdhd","trafs","baseTimes","traf","tfhd","scale","tfdt","pow","traks","videoTrackIds","hdlrs","tkhds","hdlr","view","trackId","handlerType","subarray","byteOffset","byteLength","getUint8","getUint32","tracks","stsd","sampleDescriptions","codec","codecConfig","codecBox","inspectMp4","textifyMp4","probe","subresults","results","parseMp4Date","seconds","parseSampleFlags","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","paddingValue","isNonSyncSample","degradationPriority","nalParse","avcStream","avcView","avc1","dataReferenceIndex","getUint16","horizresolution","vertresolution","frameCount","depth","config","avcC","numOfPictureParameterSets","nalSize","configurationVersion","avcProfileIndication","profileCompatibility","avcLevelIndication","lengthSizeMinusOne","sps","pps","numOfSequenceParameterSets","btrt","bufferSizeDB","maxBitrate","avgBitrate","esds","esId","streamPriority","decoderConfig","objectProfileIndication","streamType","bufferSize","decoderConfigDescriptor","audioObjectType","samplingFrequencyIndex","channelConfiguration","ftyp","majorBrand","minorVersion","compatibleBrands","dinf","dref","dataReferences","mdat","nals","creationTime","modificationTime","mdia","mfhd","sequenceNumber","minf","mp4a","channelcount","samplesize","samplerate","streamDescriptor","moof","moov","mvex","mvhd","rate","volume","matrix","nextTrackId","pdin","initialDelay","sdtp","samples","referenceId","earliestPresentationTime","referenceCount","startsWithSap","sapType","sapDeltaTime","smhd","balance","stbl","stco","chunkOffsets","entryCount","stsc","sampleToChunks","firstChunk","samplesPerChunk","sampleDescriptionIndex","stsz","sampleSize","stts","timeToSamples","sampleCount","sampleDelta","styp","baseMediaDecodeTime","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","baseDataOffset","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","layer","alternateGroup","trex","defaultSampleDescriptionIndex","sampleDependsOn","sampleIsDependedOn","sampleHasRedundancy","samplePaddingValue","sampleIsDifferenceSample","sampleDegradationPriority","trun","sample","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","dataOffset","getInt32","compositionTimeOffset","url ","vmhd","graphicsmode","opcolor","mp4Inspector","inspect","ab","z","textify","inspectedMp4","indent","prefix","bytes","byte","parseTfdt","parseHdlr","parseTfhd","parseTrun","parseSidx","captionPacketParser","payloadType","payloadSize","payload","sei","pts","userData","ccData","newLength","newData","emulationPreventionBytesPositions","sourceIndex","flushSource","partialFlush","endTimeline","reset","CaptionStream","captionPackets_","ccStreams_","Cea608Stream","cc","newCaptionPackets","nalUnitType","cea708Parser","escapedRBSP","dts","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","elem","idx","presortIndex","sort","packet","dispatchCea608Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION","42","92","94","95","96","123","124","125","126","127","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","544","545","546","547","548","549","550","551","552","553","554","555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","800","801","802","803","804","805","806","807","808","809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826","827","828","829","830","831","getCharFromCode","ROWS","createDisplayBuffer","BOTTOM_ROW","field","dataChannel","field_","dataChannel_","name_","setConstants","swap","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","flushDisplayed","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","content","startPts","endPts","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","char","newBaseRow","popOn","baseRow","rollUp","paintOn","discardEmulationPreventionBytes","mapToSample","approximateOffset","parseCaptionNals","videoTrackId","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","seiNals","headerInfo","truns","seiNal","lastMatchedSample","matchingSample","findSeiNals","currentDts","allSamples","parseSamples","captionParser","captionStream","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","captions","captionStreams","isNewInit","timescales","parsedData","cachedSegment","parseEmbeddedCaptions","pushNals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","streamTypes","handleRollover","TimestampRolloverStream","lastDTS","referenceDTS","type_","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","parsePid","pid","parsePayloadUnitStartIndicator","parseAdaptionField","parseNalUnitType","probe$1","pmtPid","parsePat","pusi","parsePmt","programMapTable","payloadOffset","tableEnd","parsePesType","StreamTypes","parsePesTime","ptsDtsFlags","pes","videoPacketContainsKeyFrame","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","ADTS_SAMPLING_FREQUENCIES","parseSyncSafeInteger","utils","isLikelyAacData","parseId3TagSize","header","byteIndex","returnSize","parseAdtsSize","lowThree","parseSampleRate","parseAacTimestamp","frameStart","frameSize","frame","percentEncode","clock","sampleRate","timestamp","aac","ONE_SECOND_IN_TS","require$$3","parseAudioPes_","pmt","pesType","parsed","endIndex","endLoop","table","parseVideoPes_","currentFrame","video","firstKeyFrame","warn","inspectTs_","parsePsi_","tsInspector","baseTimestamp","audioCount","audioTimescale","inspectAac_","audioBaseTimestamp","info","dtsTime","ptsTime","videoBaseTimestamp","adjustTimestamp_","classCallCheck","instance","Constructor","createClass","descriptor","protoProps","staticProps","possibleConstructorReturn","precompute","tables","encTable","decTable","sbox","sboxInv","xInv","th","x2","x4","tEnc","tDec","aesTables","AES","_tables","tmp","encKey","decKey","keyLen","rcon","decrypt","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","_length","_i","AsyncStream","jobs","delay","timeout_","setPrototypeOf","inherits","processJob_","job","ntoh","word","encrypted","initVector","encrypted32","decipher","decrypted","decrypted32","init0","init1","init2","init3","wordIx","Decrypter","done","STEP","asyncStream_","decryptChunk_","padded","history","LogByTypeFactory","level","lvl","levels","lvlRegExp","unshift","createLogger","logByType","subname","debug","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","createLogger$1","each","sources","isPlain","computedStyle","getComputedStyle","computedStyleValue","getPropertyValue","isNonBlankString","throwIfWhitespace","isReal","isEl","nodeType","isInFrame","parent","createQuerier","selector","context","querySelector","ctx","createEl","properties","getOwnPropertyNames","propName","setAttribute","attrName","appendContent","prependTo","child","insertBefore","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","remove","toggleClass","classToToggle","setAttributes","attrValue","removeAttribute","getAttributes","knownBooleans","attrVal","getAttribute","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","rect","findPosition","docEl","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","getPointerPosition","boxW","boxH","boxY","boxX","pageY","pageX","changedTouches","isTextNode","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","videojs","$","$$","Dom","freeze","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","createStyleElement","setTextContent","styleSheet","cssText","DomData","_guid","newGUID","_cleanUpEvents","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","returnTrue","returnFalse","isPropagationStopped","old","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","clientY","_supportsPassive","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","ownerDocument","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","uid","throttle","last","performance","debounce","immediate","debounced","_later","cancel","EventTarget","allowedEvents_","ael","dispatchEvent","queueTrigger","oldTimeout","isEvented","eventBusEl_","every","isValidEventType","validateTarget","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","wrapper","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","eventedCallbacks","StatefulMixin","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase","mergeOptions","Component","ready","play","player_","parentComponent_","options_","id_","el_","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","ret","contentEl","contentEl_","children","getChildById","getChild","addChild","component","componentName","componentClassName","componentClass","ComponentClass","getComponent","refNode","childFound","compEl","workingChildren","parentOptions","Tech","some","wchild","isTech","playerOptions","newChild","buildCSSClass","isReady_","readyQueue_","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","report","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","supportsRaf_","cancelAnimationFrame","_this4","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","_setPrototypeOf","_construct","Parent","Class","construct","sham","isNativeReflectConstruct","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","IS_IPAD","IS_IPHONE","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_ANY_SAFARI","IS_WINDOWS","TOUCH_ENABLED","maxTouchPoints","DocumentTouch","browser","getRange","fnName","valueIndex","rangeIndex","maxIndex","rangeCheck","createTimeRangesObj","createTimeRanges","bufferedPercent","buffered","bufferedDuration","browserApi","FullscreenApi","prefixed","apiMap","specApi","MediaError","defaultMessages","errorTypes","1","2","3","4","5","errNum","isPromise","silencePromise","trackToJson_","textTrackConverter","tech","trackEls","trackObjs","trackEl","textTracks","addedTrack","addRemoteTextTrack","addCue","MODAL_CLASS_NAME","ModalDialog","_Component","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","description","tabIndex","aria-describedby","aria-hidden","aria-label","previouslyActiveEl_","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","hadControls_","controls","conditionalFocus_","opened","close","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","nextSibling","empty","closeButton","content_","activeEl","activeElement","playerEl","keycode","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","hasAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks_","addTrack","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","disableOthers","enabled","AudioTrackList","_TrackList","changing_","enabledChange_","disableOthers$1","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","subtitles","commentary","AudioTrackKind","descriptions","main-desc","translation","TextTrackKind","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","parseUrl","addToBody","host","protocol","innerHTML","details","getAbsoluteURL","getFileExtension","isCrossOrigin","winLoc","urlInfo","Url","parseCues","srcContent","parser","groupCollapsed","groupEnd","loadTrack","crossOrigin","XHR","responseBody","loaded_","tech_","TextTrack","_Track","srclang","default_","activeCues_","activeCues","changed","timeupdateHandler","newMode","ct","currentTime","active","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADED","HTMLTrackElement","load","LOADING","ERROR","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","onDurationChange","manualProgress","trackProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","error_","played","setCurrentTime","trackListChanges","addWebVttScript_","_this5","script","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createTrackHelper","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","originalFn","sourceHandler_","setSource","nativeSourceHandler","disposeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","next","setSourceHelper","middleware","lastRun","_middleware","mwFactory","mwrest","mw","mws","_mws$i","mwf","mwi","getOrCreateFactory","_src","mediate","callMethod","middlewareValue","middlewareIterator","terminated","executeRight","allowedGetters","seekable","allowedSetters","setVolume","allowedMediators","MimetypesKind","opus","ogv","mp4","mov","m4v","mkv","m4a","mp3","oga","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","fixSource","mimetype","MediaLoader","techOrder","techName","isSupported","loadTech_","ClickableComponent","tabIndex_","createControlTextEl","controlTextEl_","aria-live","controlText_","localizedText","nonIconControl","enabled_","handleClick","handleMouseOver","handleMouseOut","PosterImage","_ClickableComponent","update","poster","setSrc","backgroundImage","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","userPref","cache_","selectedLanguage","aria-atomic","clearDisplay","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","textOpacity","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","guide","gm","gh","formatTime","TimeDisplay","throttledUpdateContent","updateContent","labelText_","updateTextNode_","textNode_","formattedTime_","formatTime_","updateFormattedTime_","formattedTime","CurrentTimeDisplay","_TimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","textEl_","atLiveEdge","seekToLiveEdge","Slider","bar","barName","playerEvent","handleMouseMove","handleMouseUp","aria-valuenow","aria-valuemin","aria-valuemax","progress","getPercent","toFixed","sizeKey","calculateDistance","stepBack","stepForward","bool","vertical_","LoadProgressBar","partEls_","isLive","seekableEnd","bufferedEnd","controlTextPercentage","percentify","rounded","part","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","write","updateTime","rafId_","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","SeekBar","_Slider","setEventHandlers_","updateInterval","enableInterval_","disableInterval_","toggleVisibility_","update_","liveCurrentTime","offsetParent","getCurrentTime_","seekableStart","videoWasPlaying","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","STEP_SECONDS","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","seekBar","seekBarEl","PictureInPictureToggle","handlePictureInPictureChange","pictureInPictureEnabled","isInPictureInPicture","exitPictureInPicture","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeBar","updateLastVolume_","updateARIAAttributes","checkMuted","muted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","VolumePanel","inline","volumeControl","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","item","MenuButton","buttonClass","menu","handleMenuKeyUp","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","playbackRate","PlaybackRateMenuButton","updateVisibility","updateLabel","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","initial","accum","selectedIndex","setValues","setSelectedOption","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","LiveTracker","reset_","handleDurationchange","handleVisibilityChange","stopTracking","startTracking","isBehind_","timeupdateSeen_","liveEdgeWindow","seekableIncrement_","trackLive_","pastSeekEnd_","arr","mid","sortedList","newSeekEnd","lastSeekEnd_","seekableIncrementList_","pastSeekEnd","behindLiveEdge","behindLiveEdge_","isTracking","hasStarted","trackingInterval_","handleTimeupdate","seekableEnds","seekableStarts","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","cloneNode","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","firstSourceWatch","resetSourceWatch_","innerDescriptor","HTMLMediaElement","getInnerHTMLDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","setupSourceset","resetSourceset_","srcDescriptor","getSrcDescriptor","oldSetAttribute","oldLoad","currentSrc","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","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","class","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","noop","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","featuresNativeVideoTracks","featuresNativeAudioTracks","mpegurlRE","patchCanPlayType","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","isPosterFromTech_","queuedCallbacks_","userActive_","tagAttributes","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","autoplay","plugins","scrubbing_","fluid_","updateStyleEl_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","fullscreenchange","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid","aspectRatio","links","linkEl","_dimension","privDimension","parsedVal","ratio","aspectRatio_","idClass","ratioParts","videoWidth","videoHeight","ratioMultiplier","width_","height_","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","techOptions","loop","vtt.js","canOverridePoster","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","techGet_","addTechControlsListeners_","safety","removeTechControlsListeners_","handleTechClick_","handleTechDoubleClick_","handleTechTouchStart_","handleTechTouchMove_","handleTechTouchEnd_","handleTechTap_","techCall_","manualAutoplay_","promise","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","matchingSources","findMimetype","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userActions","doubleClick","userWasActive","toggleFullscreenClass_","isFs","fullscreenElement","matches","fullscreen","msMatchesSelector","togglePictureInPictureClass_","inactivityTimeout","defaultPlaybackRate","reduceRight","_this8","play_","_this9","isSrcReady","waitToPlay_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","isScrubbing","liveui","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","isFullscreen_","fullscreenOptions","fsOptions","enterFullWindow","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","isContentEditable","excludeElement","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","_this10","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","finder","sourceOrder","_this11","filterSource","newsrc","srcobj","middlewareSource","src_","notSupportedMessage","setTech","str1","str2","_this12","sourceTech","_this13","doReset_","resetControlBarUI_","resetProgressBar_","resetPlaybackRate_","resetVolumeBar_","_this$controlBar","durationDisplay","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","isAudio_","toJSON","createModal","_this14","modal","updateCurrentBreakpoint_","currentBreakpoint","candidateBreakpoint","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this15","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","safeParseTuple","childName","html5","flash","userLanguage","navigationUI","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createPluginFactory","PluginSubClass","plugin","getEventHash","Plugin","VERSION","isBasic","registerPlugin","basicPluginWrapper","createBasicPlugin","deregisterPlugin","getPlugins","getPluginVersion","BASE_PLUGIN_NAME","usingPlugin","hasPlugin","normalizeId","videojs$1","getPlayer","defaultView","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","use","writeable","extend","subClassMethods","super_","_inherits","addLanguage","_mergeOptions","createTimeRange","setFormatTime","customImplementation","resetFormatTime","dom","resolveManifestRedirect","handleManifestRedirect","req","responseURL","slicedToArray","_arr","_n","_d","_e","_s","sliceIterator","mergeOptions$1","EventTarget$1","log$1","forEachMediaGroup","mediaType","groupKey","labelKey","mediaProperties","updateMaster","mergedPlaylist","updateSegments","baseUri","resolveSegmentUris","setupMediaPlaylists","resolveMediaGroupUris","refreshDelay","lastSegment","PlaylistLoader","srcUrl","hls","_options$withCredenti","_options$handleManife","handleManifestRedirects","hls_","hlsOptions","customTagParsers","customTagMappers","playlistRequestError","haveMetadata","startingState","customParser","media_","mediaUpdateTimeout","stopRequest","finalRenditionTimeout","oldRequest","isFinalRendition","mediaChange","started","intervalDuration","endSequence","expired","backward","forward","backwardDuration","forwardDuration","sumDurations","durations","safeLiveIndex","distanceFromEnd","safeDistance","playlistEnd","useSafeLiveEnd","isWholeNumber","roundSignificantDigit","increment","numDecimalDigits","ceilLeastSignificantDigit","floorLeastSignificantDigit","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","Playlist","getMediaInfoForTime","numSegments","mediaIndex","isDisabled","isAes","isFmp4","estimateSegmentRequestTime","segmentDuration","bytesReceived","videojsXHR","mergeOptions$1$1","xhrFactory","XhrFunction","beforeRequest","Hls","newOptions","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","timedout","originalAbort","segmentXhrHeaders","byterangeEnd","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","isView","initSegmentId","segmentKeyId","hexDump","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","filterRanges","timeRanges","findRange","TIME_FUDGE_FACTOR","findNextRange","printableRange","strArr","timeRangesToArray","timeRangesList","removeCuesFromTrack","durationOfVideo","addTextTrackData","sourceHandler","captionArray","metadataArray","Cue","WebKitDataCue","caption","inbandTextTracks_","timestampOffset","videoDuration","mediaSource_","cueTime","frames","privateData","deprecateOldCue","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","win","TARGET","SCRIPT_TYPE","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","URL","webkitURL","msURL","Worker","shimWorker","filename","forceFallback","objURL","createSourceObject","worker","term","terminate","revokeObjectURL","wrapTerminate","selfShim","postMessage","onmessage","isThisThread","testWorker","testArray","createObjectURL","Blob","blob","getBlob","TransmuxWorker","document$$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","videoSample","audioSample","audioTrun","videoTrun","trunHeader","UINT32_MAX","pasp","setUint32","audioobjecttype","samplingfrequencyindex","trackFragments","avc1Box","sequenceParameterSets","pictureParameterSets","profileIdc","levelIdc","sarRatio","hSpacing","vSpacing","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","durationPresent","sizePresent","flagsPresent","metaTable","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","mp4Generator","fileType","movie","sampleForFrame","keyFrame","frameUtils","nalUnits","currentNal","nalCount","currentGop","gops","nalsByteLength","numberOfNals","highPrefix","lowPrefix","zeroFill","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","silence","timelineStartPts","keepOriginalTimestamps","audioFrameUtils","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","frameDuration","silentFrame","firstFrame","audioGapDuration","audioFillFrameCount","audioFillDuration","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","sum","sumFrameByteLengths","ONE_SECOND_IN_TS$1","trackDecodeInfo","maxSegmentDts","maxSegmentPts","timelineStartInfo","_char","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","_MetadataStream","timestampRolloverStream","parseUtf8","tagParsers","TXXX","WXXX","PRIV","owner","tagSize","dispatchType","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","TimestampRolloverStream$1","bytesInBuffer","everything","parsePsi","packetsWaitingForPmt","psi","payloadUnitStartIndicator","pat","section_number","last_section_number","timed-metadata","processPes_","STREAM_TYPES","h264","adts","timedMetadata","stream$$1","forceFlush","packetFlushable","packetData","packetLength","flushStreams_","m2ts","PAT_PID","MP2T_PACKET_LENGTH","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","handlePartialSegments","frameNum","frameLength","protectionSkipBytes","frameEnd","oldBuffer","adtsFrameDuration","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","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","readSequenceParameterSet","skipScalingList","nalByteStream","expGolombDecoder","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","sarScale","_AacStream","H264Stream","NalByteStream","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","isLikelyAacData$1","ONE_SECOND_IN_TS$3","AUDIO_PROPERTIES","VIDEO_PROPERTIES","arrayEquals","generateVideoSegmentTimingInfo","startDts","endDts","prependedContentDuration","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","nearestDistance","alignIndex","gopIndex","alignEndIndex","matchFound","trimIndex","total","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","output","audioTrack","id3","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","pipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","transmuxer","Transmuxer","VideoSegmentStream","AudioSegmentStream","MessageHandlers","transmuxer$$1","initArray","typedArray","action","gopInfo","videoSegmentTimingInfo","wireTransmuxerEvents","appendStart","messageHandlers","defaultCodecs","videoCodec","videoObjectTypeIndicator","audioProfile","translateLegacyCodecs","orig","profile","avcLevel","parseCodecs","codecCount","makeMimeTypeString","mimeTypesForPlaylist","containerType","getContainerType","codecInfo","mediaAttributes","getCodecs","isMuxed","isMaat","audioGroup","groupId","audioGroupId","audioType","audioProfileFromDefault","codecStrings","justAudio","justVideo","bothVideoAudio","isAudioCodec","isVideoCodec","gopsSafeToAlignWith","mapping","currentTimePts","videoBuffer","audioBuffer","audioDisabled","arity","extents","videoBuffered","audioBuffered","VirtualSourceBuffer","_videojs$EventTarget","mediaSource","timestampOffset_","pendingBuffers_","bufferUpdating_","codecs_","audioCodec_","videoCodec_","audioDisabled_","appendAudioInitSegment_","gopBuffer_","timeMapping_","safeAppend_","transmuxer_","data_","done_","appendGopInfo_","videoSegmentTimingInfo_","videoBuffer_","audioBuffer_","appendWindowStart","updating","sourceBuffer","inBandMetadataTrackDispatchType","createTextTracksIfNecessary","processPendingSegments_","timingInfo","timingInfoInSeconds","presentation","addSourceBuffer","realBuffer_","makeWrappedSourceBuffer","nativeMediaSource_","updateGopBuffer","updatedBuffer","removeGopBuffer","sortedSegments","segmentObj","createRealSourceBuffers_","triggerUpdateend","concatAndAppendSegments_","destinationBuffer","tempBuffer","appendBuffer","originalError","HtmlMediaSource","property","MediaSource","activeSourceBuffers_","sourceBuffers","updateActiveSourceBuffers_","disableCombined","disableAudioOnly","onPlayerMediachange_","onHlsReset_","onHlsSegmentTimeMapping_","url_","sourcebuffer","parsedType","parameters","parameter","parseContentType","urlCount","mediaSources","msObjectURL","swfId","supportsNativeMediaSources","isTypeSupported","URL$1","EventTarget$1$1","mergeOptions$2","updateMaster$1","oldMaster","newMaster","noChanges","playlistUpdate","group","_playlistUpdate","generateSidxKey","sidxInfo","sidxByteRangeEnd","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","requestSidx_","sidxRange","finishProcessingFn","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","setupChildLoader","masterPlaylistLoader_","childPlaylist_","minimumUpdatePeriodTimeout_","mediaRequest_","doneFn","sidxRequestFinished_","masterXml_","clientOffset_","phonyUri","_phonyUri","haveMaster_","date","masterLoaded_","syncClientServerClock_","onClientServerClockSync_","utcTiming","serverTime","parseMasterXml","hasPendingRequest","masterXml","mediaGroupSidx","filterChangedSidxMappings","updatedMaster","mediaUri","logger","SourceUpdater","sourceBufferEmitter","callbacks_","pendingCallback_","processedAppend_","mimeType_","logger_","createSourceBuffer_","sourceBuffer_","start_","started_","onUpdateendCallback_","pendingCallback","removing","runCallback_","queueCallback_","videoSegmentTimingInfoCallback","disposeFn","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","REQUEST_ERRORS","abortAll","activeXhrs","handleErrors","waitForCompletion","decrypter","didError","endOfAllRequests","encryptedBytes","decryptionHandler","requestId","keyBytes","decryptSegment","handleProgress","progressFn","progressEvent","stats","loaded","firstBytesReceivedAt","mediaSegmentRequest","xhrOptions","decryptionWorker","keyXhr","errorObj","handleKeyResponse","initSegmentXhr","mp4probe","handleInitSegmentResponse","segmentXhr","getRequestStats","fmp4Captions","handleSegmentResponse","safeGetComputedStyle","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","detectEndOfStream","segmentIndex","appendedLastSegment","finite","SegmentLoader","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","currentTime_","seekable_","seeking_","loaderType_","loaderType","startingMedia_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceType","inbandTextTracks","state_","checkBufferTimeout_","currentTimeline_","pendingSegment_","sourceUpdater_","xhrOptions_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","captionParser_","CaptionParser","decrypter_","syncController_","syncController","syncPoint_","ended_","fetchAtBuffer_","newState","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","abort_","monitorBuffer_","abortRequests","_error","set$$1","storedMap","storedKey","playlist_","setDateTimeMapping","couldBeginLoading_","init_","sourceBufferEmitter_","resetEverything","newPlaylist","oldPlaylist","syncInfo","oldId","mediaSequenceDiff","saveExpiredSegmentInfo","resyncLoader","_mimeType","resetLoader","monitorBufferTick_","fillBuffer_","getSyncPoint","checkBuffer_","buffered_","isEndOfStream_","endOfStream","startOfSegment","loadSegment_","lastBufferedEnd","bufferedTime","getSyncSegmentCandidate_","generateSegmentInfo_","mediaSourceInfo","_mediaSourceInfo","segmentIndexArray","isSyncRequest","random","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$$1","timeUntilRebuffer","switchCandidate","duration$$1","compatiblePlaylists","enabledPlaylists","rebufferingEstimates","numRequests","rebufferingImpact","noRebufferingPlaylists","estimate","minRebufferMaxBandwidthSelector","timeSavedBySwitching","minimumTimeSaving","simpleSegment","abortRequestEarly_","trimBackBuffer_","createSimplifiedSegmentObj_","handleProgress_","segmentRequestFinished_","removeToTime","seekable$$1","safeBackBufferTrimTime","segmentKey","processSegmentResponse_","createCaptionsTrackIfNotExists","addCaptionData","handleSegment_","probeSegmentInfo","containsAudio","containsVideo","startingMedia","newSegmentMedia","illegalMediaSwitchError","blacklistDuration","segmentTimestampInfo","ptsStartTime","dtsStartTime","timelineMapping","mappingForTimeline","initId","_segmentInfo$segment","_segmentInfo$playlist","seq","_segmentInfo$playlist2","segmentInfoString","handleVideoSegmentTimingInfo_","handleUpdateEnd_","isWalkingForward","recordThroughput_","addSegmentMetadataCue_","segmentProcessingTime","segmentProcessingThroughput","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char2","VTTSegmentLoader","_SegmentLoader","subtitlesTrack_","combinedByteLength","combinedSegment","skipEmptySegments_","timestampOffsetForTimeline","loadHandler","errorHandler","requested","parseVTTCues_","updateTimeMapping_","timelines","decodeBytesToString","timestampmap","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","tsprobe","syncPointStrategies","run","datetimeToDisplayTime","lastDistance","segmentStart","discontinuitySync","discontinuities","SyncController","inspectCache_","syncPoints","runStrategies_","selectSyncPoint_","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","playlistTimestamp","probeMp4Segment_","probeTsSegment_","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","timeInfo","segmentStartTime","segmentEndTime","accuracy","mediaIndexDiff","Decrypter$1","AsyncStream$$1","Decrypter$$1","decrypt$$1","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onError","segmentLoaders","mediaTypes","blacklistCurrentPlaylist","activeTrack","activeGroup","defaultTrack","onTrackChanged","setupListeners","requestOptions","initialize","_settings$mediaTypes$","variantLabel","_settings$mediaTypes$2","_settings$mediaTypes$3","setupMediaGroups","variants","onGroupChanged","_settings$segmentLoad","mainSegmentLoader","previousActiveLoader","_settings$segmentLoad2","onAudioTrackChanged","createMediaTypes","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","MasterPlaylistController","externHls","useCueTags","enableLowInitialPlaylist","seekTo_","useCueTags_","cueTagsTrack_","requestOptions_","mediaTypes_","handleSourceOpen_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","setupSegmentLoaderListeners_","requestTimeout","triggerPresenceUsage_","setupSourceBuffers_","setupFirstPlay","updatedPlaylist","excludeUnsupportedVariants_","selectedMedia","selectInitialPlaylist","selectPlaylist","initialMedia_","updateAdCues_","updateDuration","addSeekableRange","addSeekableRange_","onDurationchange","stuckAtPlaylistEnd_","defaultDemuxed","audioGroupKeys","nextPlaylist","currentPlaylist","forwardBuffer","bufferLowWaterLine","onSyncInfoUpdate_","onEndOfStream","ended","isEndOfStream","getExpiredTime","absolutePlaylistEnd","mainSeekable","audioSeekable","oldEnd","oldStart","oldDuration","newDuration","setDuration","mimeTypes","configureLoaderMimeTypes_","excludeIncompatibleVariants_","variant","codecString","variantCodecs","adOffset","adTotal","_segment$cueOutCont$s","_segment$cueOutCont$s2","updateAdCues","Representation","hlsHandler","loader","playlistUri","changePlaylistFn","mpc","masterPlaylistController_","qualityChangeFunction","smoothQualityChange","incompatible","currentlyEnabled","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","canPlayHandler","monitorCurrentTime_","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","fixesBadSeeksHandler","fixesBadSeeks_","checkCurrentTime_","waiting_","afterSeekableWindow_","beforeSeekableWindow_","livePoint","nextRange","videoUnderflow_","difference","skipTheGap_","allowedEnd","gap","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","findGaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","reloadSourceOnError","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","vhs","source_","Hls$1","STANDARD_PLAYLIST_SELECTOR","playerBandwidth","playerWidth","playerHeight","limitRenditionByPlayerDimensions","sortedPlaylistReps","enabledPlaylistReps","rep","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionBestRep","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","chosenRep","simpleSelector","systemBandwidth","INITIAL_PLAYLIST_SELECTOR","comparePlaylistResolution","leftWidth","rightWidth","simpleTypeFromSourceType","handleHlsMediaChange","qualityLevels","selectedIndex_","setupEmeOptions","eme","sourceOptions","keySystemOptions","videoPlaylist","audioPlaylist","keySystemContentTypes","audioContentType","videoContentType","emeKeySystems","keySystems","initializeMediaKeys","getVhsLocalStorage","storedObject","supportsNativeHls","canItPlay","supportsNativeDash","supportsTypeNatively","Component$1","HlsHandler","dash","setOptions_","overrideNative","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","smoothQualityChange_","pauseLoading","useBandwidthFromLocalStorage","playbackWatcher_","invBandwidth","invThroughput","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaSecondsLoaded_","currentTech","playerDimensions","objectToStore","updateVhsLocalStorage","setupQualityLevels_","qualityLevels_","addQualityLevel","get$1","HlsSourceHandler","_videojs$mergeOptions","supportedType","canUseMsePlayback","UIkit","installed","icon","500px","album","arrow-down","arrow-left","arrow-right","arrow-up","ban","behance","bell","bold","bolt","bookmark","calendar","camera","cart","check","chevron-double-left","chevron-double-right","chevron-down","chevron-left","chevron-right","chevron-up","cloud-download","cloud-upload","cog","commenting","comments","copy","credit-card","database","desktop","download","dribbble","etsy","expand","facebook","file-edit","file-pdf","file-text","file","flickr","folder","foursquare","future","git-branch","git-fork","github-alt","github","gitter","google-plus","google","grid","happy","hashtag","heart","image","instagram","italic","joomla","laptop","lifesaver","link","linkedin","lock","mail","microphone","minus-circle","minus","more-vertical","more","nut","pagekit","paint-bucket","pencil","phone-landscape","phone","pinterest","play-circle","plus-circle","plus","print","pull","question","quote-right","reddit","refresh","reply","rss","server","shrink","sign-in","sign-out","social","soundcloud","star","strikethrough","tablet-landscape","tablet","thumbnails","trash","triangle-down","triangle-left","triangle-right","triangle-up","tripadvisor","tumblr","tv","twitter","uikit","unlock","upload","user","users","video-camera","vimeo","warning","whatsapp","wordpress","world","xing","yelp","youtube","factory","_gsScope","TweenLite","_exports","_doc","_globals","GreenSockGlobals","_ticker","_tickerActive","_namespace","ns","gs","_slice","_emptyFunc","_isArray","_defLookup","Definition","dependencies","sc","gsClass","_classes","cur","cl","missing","_gsDefine","_class","globals","_baseParams","Ease","extraParams","power","_func","_type","_power","_params","_easeMap","_easeReg","register","ease","na","ta","easing","getRatio","_calcEnd","pw","linear","Linear","easeIn","swing","Quad","easeInOut","EventDispatcher","_listeners","_eventTarget","scope","useParam","wake","pr","_reqAnimFrame","_cancelAnimFrame","_getTime","_lastUpdate","fps","useRAF","_fps","_req","_gap","_nextTime","_self","_useRAF","_lagThreshold","_adjustedLag","_tick","manual","overlap","dispatch","elapsed","tick","lagSmoothing","threshold","adjustedLag","sleep","seamless","visibilityState","Ticker","events","Animation","vars","_duration","_totalDuration","_delay","_timeScale","_active","immediateRender","_reversed","reversed","_rootTimeline","tl","useFrames","_rootFramesTimeline","_time","ticker","_dirty","_gc","_initted","_paused","_totalTime","_rawPrevTime","_next","_last","_onUpdate","_timeline","_checkTimeout","unref","suppressEvents","seek","atTime","resume","totalTime","restart","includeDelay","render","force","invalidate","_enabled","isActive","rawTime","ignoreTimeline","_remove","_kill","kill","_uncache","includeSelf","tween","_swapSelfInParams","_callback","callbackScope","eventCallback","smoothChildTiming","uncapped","_pauseTime","_lazyTweens","_lazyRender","totalProgress","_sortChildren","includeRepeats","timeScale","pauseTime","raw","SimpleTimeline","autoRemoveChildren","_first","_recent","stagger","prevTween","st","_prev","skipDisable","targ","targets","isSelector","jquery","overwrite","_overwrite","_overwriteLookup","defaultOverwrite","_targets","_propLookup","_siblings","_register","_applyOverwrite","_isSelector","_firstPT","_overwrittenProps","_startAt","_notifyPluginsOfEnabled","_lazy","defaultEase","_ease","autoSleep","jQuery","getElementById","_lazyLookup","_numbersExp","_relExp","_setRatio","pt","_tween","_target","fp","_blobRound","_blobDif","startNums","endNums","nonNumbers","currentNum","charIndex","_applyPT","setRatio","_addPropTween","overwriteProp","funcParam","stringFilter","isRelative","pg","defaultStringFilter","_internals","lazyTweens","blobDif","_plugins","_tweenLookup","tweenLookup","_tweenLookupNum","_reservedProps","reservedProps","onComplete","onCompleteParams","onCompleteScope","runBackwards","startAt","onUpdate","onUpdateParams","onUpdateScope","onStart","onStartParams","onStartScope","onReverseComplete","onReverseCompleteParams","onReverseCompleteScope","onRepeat","onRepeatParams","onRepeatScope","easeParams","yoyo","repeatDelay","autoCSS","lazy","onOverwrite","yoyoEase","none","auto","concurrent","allOnStart","preexisting","true","false","_nextGCFrame","lazyRender","_updateRoot","tweens","scrub","_gsTweenID","_onOverwrite","overwrittenTween","overwritingTween","killedProps","r1","r2","siblings","curTween","globalStart","oCount","zeroDur","_checkOverlap","_tinyNum","_init","initPlugins","startVars","op","dur","_easeType","_easePower","_initProps","_onPluginEvent","propLookup","overwrittenProps","css","_autoCSS","_onInitTween","_priority","_overwriteProps","_onInitAllProps","_onDisable","_onEnable","isComplete","rawPrevTime","prevTime","prevRawPrevTime","killProps","record","killed","simultaneousOverwrite","firstPT","_tempKill","fromTo","fromVars","toVars","delayedCall","getTweensOf","onlyActive","killTweensOf","killDelayedCallsTo","TweenPlugin","_propName","_super","API","_addTween","lookup","_mod","_roundProps","pt2","first","activate","overwriteProps","initAll","_gsQueue","nonGlobals","com","greensock","core","Power1","Power2","Power3","Power4","_applyCycle","cycle","_distribute","cache","isFromKeyword","center","originX","originY","wrap","distances","amount","TweenMax","_cycle","_yoyo","_repeat","_repeatDelay","TweenLiteInternals","_blankArray","distribute","_yoyoEase","updateTo","resetDuration","curRatio","endValue","inv","cycleDuration","totalDur","prevTotalTime","prevCycle","staggerTo","allTo","onCompleteAll","onCompleteAllParams","onCompleteAllScope","staggerFunc","fromCycle","staggerFrom","allFrom","staggerFromTo","allFromTo","isTweening","_getChildrenOf","includeTimelines","cnt","getAllTweens","killAll","complete","delayedCalls","isDC","allTrue","killChildTweensOf","curParent","_changePause","pauseAll","resumeAll","globalTimeScale","cycleDur","_hasPriority","_suffixMap","_cs","CSSPlugin","_specialProps","defaultTransformPerspective","defaultSkewType","defaultSmoothOrigin","suffixMap","padding","perspective","_autoRound","_reqSafariFix","_isSafari","_isFirefox","_isSafariLT6","_ieVers","_index","_numExp","_relNumExp","_valuesExp","_valuesExpWithCommas","_NaNExp","_suffixExp","_opacityExp","_opacityValExp","_alphaFilterExp","_rgbhslExp","_capsExp","_camelExp","_urlExp","_camelFunc","g","_horizExp","_ieGetMatrixExp","_ieSetMatrixExp","_commasOutsideParenExp","_complexExp","_DEG2RAD","PI","_RAD2DEG","_forcePT","_dummyElement","_createElement","createElementNS","_tempDiv","_tempImg","_agent","_supportsOpacity","$1","_getIEOpacity","currentStyle","_log","_prefixCSS","_prefix","_checkPropPrefix","_computedStyleScope","_getComputedStyle","_getStyle","getStyle","cs","calc","rv","_convertToPixels","convertToPixels","sfx","recurse","pix","horiz","neg","clientWidth","clientHeight","_gsCache","cacheWidths","_calculateOffset","calculateOffset","dim","_getAllStyles","tr","_transformPropCSS","_transformProp","_getTransform","rotation","skewX","scaleX","scaleY","_supports3D","rotationX","rotationY","scaleZ","filters","_cssDif","s1","s2","forceLookup","mpt","difs","MiniPropTween","firstMPT","_dimensions","_margins","_getDimension","getCTM","_isSVG","getBBox","_parsePosition","recObj","oxp","oyp","oxr","oyr","ox","oy","_parseChange","_parseVal","_parseAngle","directionalEnd","dif","cap","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","fuchsia","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","m1","m2","_parseColor","parseColor","toHSL","wasHSL","_formatColors","colors","_colorExp","colorStringFilter","combined","lastIndex","_getFormatter","clr","collapsible","multi","formatter","dColor","dVals","pfx","delim","numVals","dSfx","_getEdgeParser","cssp","_setPluginRatio","proxy","autoRotate","xs0","xs1","CSSPropTween","_parseToProxy","shallow","xp","bpt","transform","_transform","oldForce","rxp","_addNonTweeningNumericPT","_parseComplex","parseComplex","clrs","xi","ni","bv","ev","bnums","enums","bn","hasAlpha","cv","useHSL","ba","ea","autoRound","appendXtra","xfirst","pad","SpecialProp","keyword","allowFunc","_registerComplexSpecialProp","defaults","_registerPluginProp","pluginName","pluginClass","_cssRegister","bi","ei","kwd","registerSpecialProp","onInitTween","useSVGTransformAttr","_useSVGTransformAttr","_transformProps","_transformOriginProp","Transform","force3D","defaultForce3D","_SVGElement","SVGElement","_createSVG","reg","setAttributeNS","_docElement","_forceSVGTransformAttr","chrome","_parseSVGOrigin","local","decoratee","absolute","smoothOrigin","skipRecord","xOrigin","yOrigin","tx","ty","determinant","xOriginOld","yOriginOld","tm","_gsTransform","_getMatrix","_identity2DMatrix","xOffset","yOffset","_getBBoxHack","swapIfPossible","bbox","ownerSVGElement","oldParent","oldSibling","oldCSS","_originalGetBBox","_getBBox","force2D","isDefault","dec","_removeProp","baseVal","consolidate","getTransform","rec","invX","zOrigin","t1","t2","t3","cos","sin","a11","a21","a31","a41","a12","a22","a32","a42","a13","a23","a33","a14","a24","a34","a43","angle","atan2","skewType","_setIETransformRatio","ang","skew","dx","dy","clip","xPercent","yPercent","marg","mult","ieOffsetX","ieOffsetY","_setTransformRatio","set3DTransformRatio","setTransformRatio","sx","sy","sz","isSVG","skewY","tan","parsingProp","_lastParsedTransform","scaleFunc","has3D","hasChange","dr","originalGSTransform","endRotations","parseTransform","rotationZ","transformOrigin","svgOrigin","transformPerspective","directionalRotation","shortRotation","shortRotationX","shortRotationY","_transformType","ea1","es2","bs2","bs","es","en","esfx","bsfx","rel","hn","vn","em","pct","bp","backgroundPositionX","backgroundPositionY","clipTop","clipRight","clipBottom","clipLeft","bw","_setIEOpacityRatio","skip","xn1","isAutoAlpha","zoom","removeProperty","_setClassNameRatio","_gsClassPT","difData","cnpt","cnptLookup","_classNamePT","_setClearPropsRatio","clearTransform","transformParse","_vars","zIndex","tpt","threeD","_addLazySet","WebkitBackfaceVisibility","_linkCSSP","sp","isStr","strictUnits","xs2","xn2","xs3","xn3","xs4","xn4","xs5","_enableTransforms","lazySet","prev","autoAlpha","alpha","visibility","_getChildStyles","cascadeTo","AttrPlugin","RoundPropsPlugin","_getRoundFunc","_roundLinkedList","rp","roundProps","rpt","_add","DirectionalRotationPlugin","finals","useRadians","TimelineLite","_labels","_copy","_pauseCallback","pauseCallback","_defaultImmediateRender","defaultFalse","ir","_forcingPlayhead","_hasPause","Engine","exportRoot","ignoreDelayedCalls","hasNegativeStart","root","curTime","beforeRawTime","_parseTimeOrLabel","addLabel","removeLabel","offsetOrLabel","insertMultiple","appendMultiple","addPause","getLabelTime","timeOrLabel","appendIfAbsent","ignore","clippedDuration","recent","stop","gotoAndPlay","gotoAndStop","internalForce","pauseTween","prevStart","prevTimeScale","prevPaused","_hasPausedChild","getChildren","nested","ignoreBeforeTime","_contains","shiftChildren","adjustLabels","labels","_calculatingDuration","usesFrames","wrapRepeats","TimelineMax","_easeNone","addCallback","removeCallback","removePause","tweenTo","isFromTo","tweenFromTo","fromPosition","toPosition","_locked","backwards","recTotalTime","recCycle","recRawPrevTime","recTime","getActive","getLabelAfter","getLabelsArray","getLabelBefore","currentLabel","_r1","_r2","_r3","_corProps","Segment","da","ca","cubicToQuadratic","q1","q2","q3","q4","mab","mbc","mcd","mabc","mbcd","m8","_calculateControlPoints","curviness","quad","basic","correlate","p1","p2","p3","seg","mm","cp2","qb","ii","cp1","_parseAnchors","prepend","bezierThrough","quadratic","_addCubicLengths","steps","d1","bez","inc","BezierPlugin","_props","_timeRes","timeResolution","isFunc","orientToBezier","_autoRotate","_beziers","soft","_parseBezierData","_segCount","ld","lengths","curLS","_parseLengthData","_lengths","_segments","_l1","_li","_s1","_si","_l2","_curSeg","_s2","_prec","_initialRotations","_startRatio","curIndex","curSeg","v1","notStart","x1","y1","y2","conv","ar","quadraticToCubic","pluginValues","SteppedEase","ExpoScaleEase","RoughEase","_createElastic","_2PI","_HALF_PI","_create","C","_wrap","EaseOut","EaseIn","EaseInOut","easeOut","EasePoint","_createBack","overshoot","_p1","_p2","Back","SlowMo","linearRatio","yoyoMode","_p","_p3","immediateStart","exp","bump","pnt","taper","points","randomize","clamp","strength","invert","def","amplitude","asin","find","Elastic","Bounce","Circ","Expo","Sine","TweenMaxBase","_autoActivated","__assign","modalClose","removeAttr","videoSize","$this","$player","outerWidth","outerHeight","videoAspect","min-width","click","videoId","originalEvent","keyup","resize","Icons"],"mappings":"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","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","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nfunction keyCode(searchInput) {\n // Keyboard Events\n if (searchInput && 'object' === typeof searchInput) {\n var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n if (hasKeyCode) searchInput = hasKeyCode\n }\n\n // Numbers\n if ('number' === typeof searchInput) return names[searchInput]\n\n // Everything else (cast to string)\n var search = String(searchInput)\n\n // check codes\n var foundNamedKey = codes[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // check aliases\n var foundNamedKey = aliases[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // weird character?\n if (search.length === 1) return search.charCodeAt(0)\n\n return undefined\n}\n\n/**\n * Compares a keyboard event with a given keyCode or keyName.\n *\n * @param {Event} event Keyboard event that should be tested\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Boolean}\n * @api public\n */\nkeyCode.isEventKey = function isEventKey(event, nameOrCode) {\n if (event && 'object' === typeof event) {\n var keyCode = event.which || event.keyCode || event.charCode\n if (keyCode === null || keyCode === undefined) { return false; }\n if (typeof nameOrCode === 'string') {\n // check codes\n var foundNamedKey = codes[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n \n // check aliases\n var foundNamedKey = aliases[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n } else if (typeof nameOrCode === 'number') {\n return nameOrCode === keyCode;\n }\n return false;\n }\n}\n\nexports = module.exports = keyCode;\n\n/**\n * Get by name\n *\n * exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'ctrl': 17,\n 'alt': 18,\n 'pause/break': 19,\n 'caps lock': 20,\n 'esc': 27,\n 'space': 32,\n 'page up': 33,\n 'page down': 34,\n 'end': 35,\n 'home': 36,\n 'left': 37,\n 'up': 38,\n 'right': 39,\n 'down': 40,\n 'insert': 45,\n 'delete': 46,\n 'command': 91,\n 'left command': 91,\n 'right command': 93,\n 'numpad *': 106,\n 'numpad +': 107,\n 'numpad -': 109,\n 'numpad .': 110,\n 'numpad /': 111,\n 'num lock': 144,\n 'scroll lock': 145,\n 'my computer': 182,\n 'my calculator': 183,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n 'windows': 91,\n '⇧': 16,\n '⌥': 18,\n '⌃': 17,\n '⌘': 91,\n 'ctl': 17,\n 'control': 17,\n 'option': 18,\n 'pause': 19,\n 'break': 19,\n 'caps': 20,\n 'return': 13,\n 'escape': 27,\n 'spc': 32,\n 'spacebar': 32,\n 'pgup': 33,\n 'pgdn': 34,\n 'ins': 45,\n 'del': 46,\n 'cmd': 91\n}\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n * exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n codes[alias] = aliases[alias]\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\n/* globals\n\tSet,\n\tMap,\n\tWeakSet,\n\tWeakMap,\n\n\tPromise,\n\n\tSymbol,\n\tProxy,\n\n\tAtomics,\n\tSharedArrayBuffer,\n\n\tArrayBuffer,\n\tDataView,\n\tUint8Array,\n\tFloat32Array,\n\tFloat64Array,\n\tInt8Array,\n\tInt16Array,\n\tInt32Array,\n\tUint8ClampedArray,\n\tUint16Array,\n\tUint32Array,\n*/\n\nvar undefined; // eslint-disable-line no-shadow-restricted-names\n\nvar ThrowTypeError = Object.getOwnPropertyDescriptor\n\t? (function () { return Object.getOwnPropertyDescriptor(arguments, 'callee').get; }())\n\t: function () { throw new TypeError(); };\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'$ %Array%': Array,\n\t'$ %ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'$ %ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'$ %ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'$ %ArrayPrototype%': Array.prototype,\n\t'$ %ArrayProto_entries%': Array.prototype.entries,\n\t'$ %ArrayProto_forEach%': Array.prototype.forEach,\n\t'$ %ArrayProto_keys%': Array.prototype.keys,\n\t'$ %ArrayProto_values%': Array.prototype.values,\n\t'$ %AsyncFromSyncIteratorPrototype%': undefined,\n\t'$ %AsyncFunction%': asyncFunction,\n\t'$ %AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'$ %AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'$ %AsyncGeneratorFunction%': asyncGenFunction,\n\t'$ %AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'$ %AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'$ %Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'$ %Boolean%': Boolean,\n\t'$ %BooleanPrototype%': Boolean.prototype,\n\t'$ %DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'$ %DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'$ %Date%': Date,\n\t'$ %DatePrototype%': Date.prototype,\n\t'$ %decodeURI%': decodeURI,\n\t'$ %decodeURIComponent%': decodeURIComponent,\n\t'$ %encodeURI%': encodeURI,\n\t'$ %encodeURIComponent%': encodeURIComponent,\n\t'$ %Error%': Error,\n\t'$ %ErrorPrototype%': Error.prototype,\n\t'$ %eval%': eval, // eslint-disable-line no-eval\n\t'$ %EvalError%': EvalError,\n\t'$ %EvalErrorPrototype%': EvalError.prototype,\n\t'$ %Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'$ %Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'$ %Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'$ %Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'$ %Function%': Function,\n\t'$ %FunctionPrototype%': Function.prototype,\n\t'$ %Generator%': generator ? getProto(generator()) : undefined,\n\t'$ %GeneratorFunction%': generatorFunction,\n\t'$ %GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'$ %Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'$ %Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'$ %Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'$ %Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'$ %Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'$ %Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'$ %isFinite%': isFinite,\n\t'$ %isNaN%': isNaN,\n\t'$ %IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'$ %JSON%': JSON,\n\t'$ %JSONParse%': JSON.parse,\n\t'$ %Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'$ %MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'$ %MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'$ %Math%': Math,\n\t'$ %Number%': Number,\n\t'$ %NumberPrototype%': Number.prototype,\n\t'$ %Object%': Object,\n\t'$ %ObjectPrototype%': Object.prototype,\n\t'$ %ObjProto_toString%': Object.prototype.toString,\n\t'$ %ObjProto_valueOf%': Object.prototype.valueOf,\n\t'$ %parseFloat%': parseFloat,\n\t'$ %parseInt%': parseInt,\n\t'$ %Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'$ %PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'$ %PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'$ %Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'$ %Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'$ %Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'$ %Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'$ %RangeError%': RangeError,\n\t'$ %RangeErrorPrototype%': RangeError.prototype,\n\t'$ %ReferenceError%': ReferenceError,\n\t'$ %ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'$ %Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'$ %RegExp%': RegExp,\n\t'$ %RegExpPrototype%': RegExp.prototype,\n\t'$ %Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'$ %SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'$ %SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'$ %SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'$ %SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'$ %String%': String,\n\t'$ %StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'$ %StringPrototype%': String.prototype,\n\t'$ %Symbol%': hasSymbols ? Symbol : undefined,\n\t'$ %SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'$ %SyntaxError%': SyntaxError,\n\t'$ %SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'$ %ThrowTypeError%': ThrowTypeError,\n\t'$ %TypedArray%': TypedArray,\n\t'$ %TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'$ %TypeError%': TypeError,\n\t'$ %TypeErrorPrototype%': TypeError.prototype,\n\t'$ %Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'$ %Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'$ %Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'$ %Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'$ %Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'$ %Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'$ %Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'$ %Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'$ %URIError%': URIError,\n\t'$ %URIErrorPrototype%': URIError.prototype,\n\t'$ %WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'$ %WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'$ %WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'$ %WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar key = '$ ' + name;\n\tif (!(key in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[key] === 'undefined' && !allowMissing) {\n\t\tthrow new TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\treturn INTRINSICS[key];\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar GetIntrinsic = require('../GetIntrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\n\nvar has = require('has');\n\nvar predicates = {\n // https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type\n 'Property Descriptor': function isPropertyDescriptor(ES, Desc) {\n if (ES.Type(Desc) !== 'Object') {\n return false;\n }\n var allowed = {\n '[[Configurable]]': true,\n '[[Enumerable]]': true,\n '[[Get]]': true,\n '[[Set]]': true,\n '[[Value]]': true,\n '[[Writable]]': true\n };\n\n for (var key in Desc) { // eslint-disable-line\n if (has(Desc, key) && !allowed[key]) {\n return false;\n }\n }\n\n var isData = has(Desc, '[[Value]]');\n var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n if (isData && IsAccessor) {\n throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n }\n return true;\n }\n};\n\nmodule.exports = function assertRecord(ES, recordType, argumentName, value) {\n var predicate = predicates[recordType];\n if (typeof predicate !== 'function') {\n throw new $SyntaxError('unknown record type: ' + recordType);\n }\n if (!predicate(ES, value)) {\n throw new $TypeError(argumentName + ' must be a ' + recordType);\n }\n console.log(predicate(ES, value), value);\n};\n","module.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","var $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n","module.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isCallable(value) {\n\tif (!value) { return false; }\n\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\tif (typeof value === 'function' && !value.prototype) { return true; }\n\tif (hasToStringTag) { return tryFunctionObject(value); }\n\tif (isES6ClassFn(value)) { return false; }\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n","module.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\nvar isCallable = require('is-callable');\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n","'use strict';\n\nvar GetIntrinsic = require('./GetIntrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $String = GetIntrinsic('%String%');\n\nvar assertRecord = require('./helpers/assertRecord');\nvar $isNaN = require('./helpers/isNaN');\nvar $isFinite = require('./helpers/isFinite');\n\nvar sign = require('./helpers/sign');\nvar mod = require('./helpers/mod');\n\nvar IsCallable = require('is-callable');\nvar toPrimitive = require('es-to-primitive/es5');\n\nvar has = require('has');\n\n// https://es5.github.io/#x9\nvar ES5 = {\n\tToPrimitive: toPrimitive,\n\n\tToBoolean: function ToBoolean(value) {\n\t\treturn !!value;\n\t},\n\tToNumber: function ToNumber(value) {\n\t\treturn +value; // eslint-disable-line no-implicit-coercion\n\t},\n\tToInteger: function ToInteger(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number)) { return 0; }\n\t\tif (number === 0 || !$isFinite(number)) { return number; }\n\t\treturn sign(number) * Math.floor(Math.abs(number));\n\t},\n\tToInt32: function ToInt32(x) {\n\t\treturn this.ToNumber(x) >> 0;\n\t},\n\tToUint32: function ToUint32(x) {\n\t\treturn this.ToNumber(x) >>> 0;\n\t},\n\tToUint16: function ToUint16(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x10000);\n\t},\n\tToString: function ToString(value) {\n\t\treturn $String(value);\n\t},\n\tToObject: function ToObject(value) {\n\t\tthis.CheckObjectCoercible(value);\n\t\treturn $Object(value);\n\t},\n\tCheckObjectCoercible: function CheckObjectCoercible(value, optMessage) {\n\t\t/* jshint eqnull:true */\n\t\tif (value == null) {\n\t\t\tthrow new $TypeError(optMessage || 'Cannot call method on ' + value);\n\t\t}\n\t\treturn value;\n\t},\n\tIsCallable: IsCallable,\n\tSameValue: function SameValue(x, y) {\n\t\tif (x === y) { // 0 === -0, but they are not identical.\n\t\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\t\treturn true;\n\t\t}\n\t\treturn $isNaN(x) && $isNaN(y);\n\t},\n\n\t// https://www.ecma-international.org/ecma-262/5.1/#sec-8\n\tType: function Type(x) {\n\t\tif (x === null) {\n\t\t\treturn 'Null';\n\t\t}\n\t\tif (typeof x === 'undefined') {\n\t\t\treturn 'Undefined';\n\t\t}\n\t\tif (typeof x === 'function' || typeof x === 'object') {\n\t\t\treturn 'Object';\n\t\t}\n\t\tif (typeof x === 'number') {\n\t\t\treturn 'Number';\n\t\t}\n\t\tif (typeof x === 'boolean') {\n\t\t\treturn 'Boolean';\n\t\t}\n\t\tif (typeof x === 'string') {\n\t\t\treturn 'String';\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type\n\tIsPropertyDescriptor: function IsPropertyDescriptor(Desc) {\n\t\tif (this.Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.1\n\tIsAccessorDescriptor: function IsAccessorDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.2\n\tIsDataDescriptor: function IsDataDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.3\n\tIsGenericDescriptor: function IsGenericDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!this.IsAccessorDescriptor(Desc) && !this.IsDataDescriptor(Desc)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.4\n\tFromPropertyDescriptor: function FromPropertyDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn Desc;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (this.IsDataDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tvalue: Desc['[[Value]]'],\n\t\t\t\twritable: !!Desc['[[Writable]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else if (this.IsAccessorDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tget: Desc['[[Get]]'],\n\t\t\t\tset: Desc['[[Set]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5\n\tToPropertyDescriptor: function ToPropertyDescriptor(Obj) {\n\t\tif (this.Type(Obj) !== 'Object') {\n\t\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t\t}\n\n\t\tvar desc = {};\n\t\tif (has(Obj, 'enumerable')) {\n\t\t\tdesc['[[Enumerable]]'] = this.ToBoolean(Obj.enumerable);\n\t\t}\n\t\tif (has(Obj, 'configurable')) {\n\t\t\tdesc['[[Configurable]]'] = this.ToBoolean(Obj.configurable);\n\t\t}\n\t\tif (has(Obj, 'value')) {\n\t\t\tdesc['[[Value]]'] = Obj.value;\n\t\t}\n\t\tif (has(Obj, 'writable')) {\n\t\t\tdesc['[[Writable]]'] = this.ToBoolean(Obj.writable);\n\t\t}\n\t\tif (has(Obj, 'get')) {\n\t\t\tvar getter = Obj.get;\n\t\t\tif (typeof getter !== 'undefined' && !this.IsCallable(getter)) {\n\t\t\t\tthrow new TypeError('getter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Get]]'] = getter;\n\t\t}\n\t\tif (has(Obj, 'set')) {\n\t\t\tvar setter = Obj.set;\n\t\t\tif (typeof setter !== 'undefined' && !this.IsCallable(setter)) {\n\t\t\t\tthrow new $TypeError('setter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Set]]'] = setter;\n\t\t}\n\n\t\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t\t}\n\t\treturn desc;\n\t}\n};\n\nmodule.exports = ES5;\n","module.exports = function mod(number, modulo) {\n\tvar remain = number % modulo;\n\treturn Math.floor(remain >= 0 ? remain : remain + modulo);\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar ES = require('es-abstract/es5');\nvar replace = bind.call(Function.call, String.prototype.replace);\n\n/* eslint-disable no-control-regex */\nvar leftWhitespace = /^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+/;\nvar rightWhitespace = /[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+$/;\n/* eslint-enable no-control-regex */\n\nmodule.exports = function trim() {\n\tvar S = ES.ToString(ES.CheckObjectCoercible(this));\n\treturn replace(replace(S, leftWhitespace, ''), rightWhitespace, '');\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar zeroWidthSpace = '\\u200b';\n\nmodule.exports = function getPolyfill() {\n\tif (String.prototype.trim && zeroWidthSpace.trim() === zeroWidthSpace) {\n\t\treturn String.prototype.trim;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar boundTrim = bind.call(Function.call, getPolyfill());\n\ndefine(boundTrim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundTrim;\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimStringTrim() {\n\tvar polyfill = getPolyfill();\n\tdefine(String.prototype, { trim: polyfill }, {\n\t\ttrim: function testTrim() {\n\t\t\treturn String.prototype.trim !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","var trim = require('string.prototype.trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","\"use strict\";\nvar window = require(\"global/window\")\nvar isFunction = require(\"is-function\")\nvar parseHeaders = require(\"parse-headers\")\nvar xtend = require(\"xtend\")\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function(method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function(uri, options, callback) {\n options = initParams(uri, options, callback)\n options.method = method.toUpperCase()\n return _createXHR(options)\n }\n})\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i])\n }\n}\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri\n\n if (isFunction(options)) {\n callback = options\n if (typeof uri === \"string\") {\n params = {uri:uri}\n }\n } else {\n params = xtend(options, {uri: uri})\n }\n\n params.callback = callback\n return params\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback)\n return _createXHR(options)\n}\n\nfunction _createXHR(options) {\n if(typeof options.callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n\n var called = false\n var callback = function cbOnce(err, response, body){\n if(!called){\n called = true\n options.callback(err, response, body)\n }\n }\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0)\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else {\n body = xhr.responseText || getXml(xhr)\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n return callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n return callback(err, response, response.body)\n }\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n if (\"json\" in options && options.json !== false) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json === true ? body : options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.onabort = function(){\n aborted = true;\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n if (aborted) return\n aborted = true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n xhr.send(body || null)\n\n return xhr\n\n\n}\n\nfunction getXml(xhr) {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML\n }\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\"\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML\n }\n\n return null\n}\n\nfunction noop() {}\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{2})(:\\d{2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0];\n var v = kv[1];\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"middle\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n cue.line = settings.get(\"line\", \"auto\");\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n cue.align = settings.get(\"align\", \"middle\");\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n middle: \"middle\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\nvar ESCAPE = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"‎\": \"\\u200e\",\n \"‏\": \"\\u200f\",\n \" \": \"\\u00a0\"\n};\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n // Unescape a string 's'.\n function unescape1(e) {\n return ESCAPE[e];\n }\n function unescape(s) {\n while ((m = s.match(/&(amp|lt|gt|lrm|rlm|nbsp);/))) {\n s = s.replace(m[0], unescape1);\n }\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n element.localName = tagName;\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n node.className = m[2].substr(1).replace('.', ' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except \"middle\" which is \"center\" in CSS.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n textPos = cue.position;\n break;\n case \"middle\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"middle\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line;\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": 1,\n \"lr\": 1,\n \"rl\": 1\n};\nvar alignSetting = {\n \"start\": 1,\n \"middle\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n this.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = 50;\n var _positionAlign = \"middle\";\n var _size = 50;\n var _align = \"middle\";\n\n Object.defineProperties(this, {\n \"id\": {\n enumerable: true,\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n },\n\n \"pauseOnExit\": {\n enumerable: true,\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n },\n\n \"startTime\": {\n enumerable: true,\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"endTime\": {\n enumerable: true,\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"text\": {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n },\n\n \"region\": {\n enumerable: true,\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n },\n\n \"vertical\": {\n enumerable: true,\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"snapToLines\": {\n enumerable: true,\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n },\n\n \"line\": {\n enumerable: true,\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n },\n\n \"lineAlign\": {\n enumerable: true,\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"position\": {\n enumerable: true,\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n },\n\n \"positionAlign\": {\n enumerable: true,\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"size\": {\n enumerable: true,\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n },\n\n \"align\": {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }\n });\n\n /**\n * Other spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n this.displayState = undefined;\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar scrollSetting = {\n \"\": true,\n \"up\": true\n};\n\nfunction findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n}\n\nfunction isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n}\n\n// VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\nfunction VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _scroll = setting;\n }\n }\n });\n}\n\nmodule.exports = VTTRegion;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","// see https://tools.ietf.org/html/rfc1808\n\n/* jshint ignore:start */\n(function(root) { \n/* jshint ignore:end */\n\n var URL_REGEX = /^((?:[a-zA-Z0-9+\\-.]+:)?)(\\/\\/[^\\/?#]*)?((?:[^\\/\\?#]*\\/)*.*?)??(;.*?)?(\\?.*?)?(#.*?)?$/;\n var FIRST_SEGMENT_REGEX = /^([^\\/?#]*)(.*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/).*?(?=\\/)/g;\n\n var URLToolkit = { // jshint ignore:line\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function(baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(basePartsForNormalise.path);\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function(url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || ''\n };\n },\n normalizePath: function(path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length) {} // jshint ignore:line\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function(parts) {\n return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment;\n }\n };\n\n/* jshint ignore:start */\n if(typeof exports === 'object' && typeof module === 'object')\n module.exports = URLToolkit;\n else if(typeof define === 'function' && define.amd)\n define([], function() { return URLToolkit; });\n else if(typeof exports === 'object')\n exports[\"URLToolkit\"] = URLToolkit;\n else\n root[\"URLToolkit\"] = URLToolkit;\n})(this);\n/* jshint ignore:end */\n","/*! @name m3u8-parser @version 4.4.0 @license Apache-2.0 */\nimport window from 'global/window';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implementation that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream =\n/*#__PURE__*/\nfunction () {\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);\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 var i;\n var length;\n var args;\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 length = callbacks.length;\n\n for (i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n args = Array.prototype.slice.call(arguments, 1);\n length = callbacks.length;\n\n for (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\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 =\n/*#__PURE__*/\nfunction (_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\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\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 =\n/*#__PURE__*/\nfunction (_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 = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'totalduration'\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:?([0-9.]*)?@?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'byterange'\n };\n\n if (match[1]) {\n event.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n event.offset = parseInt(match[2], 10);\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 var _attributes$BYTERANGE = attributes.BYTERANGE.split('@'),\n length = _attributes$BYTERANGE[0],\n offset = _attributes$BYTERANGE[1];\n\n event.byterange = {};\n\n if (length) {\n event.byterange.length = parseInt(length, 10);\n }\n\n if (offset) {\n event.byterange.offset = parseInt(offset, 10);\n }\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 } // 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\nfunction decodeB64ToUint8Array(b64Text) {\n var decodedString = window.atob(b64Text || '');\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\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\nvar Parser =\n/*#__PURE__*/\nfunction (_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 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 }; // update the manifest with the m3u8 entry from the parse stream\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 '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 this.trigger('info', {\n message: 'defaulting offset to zero'\n });\n entry.offset = 0;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\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 } // 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 = {\n '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 };\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 '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 },\n totalduration: function totalduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid total duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.totalDuration = entry.duration;\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 })[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 } // prepare for the next URI\n\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 * 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 var _proto = Parser.prototype;\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 }\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","/*! @name mpd-parser @version 0.8.1 @license Apache-2.0 */\nimport window$1 from 'global/window';\n\nvar version = \"0.8.1\";\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 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\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar urlToolkit = createCommonjsModule(function (module, exports) {\n// see https://tools.ietf.org/html/rfc1808\n\n/* jshint ignore:start */\n(function(root) { \n/* jshint ignore:end */\n\n var URL_REGEX = /^((?:[a-zA-Z0-9+\\-.]+:)?)(\\/\\/[^\\/?#]*)?((?:[^\\/\\?#]*\\/)*.*?)??(;.*?)?(\\?.*?)?(#.*?)?$/;\n var FIRST_SEGMENT_REGEX = /^([^\\/?#]*)(.*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/).*?(?=\\/)/g;\n\n var URLToolkit = { // jshint ignore:line\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function(baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(basePartsForNormalise.path);\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function(url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || ''\n };\n },\n normalizePath: function(path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length) {} // jshint ignore:line\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function(parts) {\n return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment;\n }\n };\n\n/* jshint ignore:start */\n module.exports = URLToolkit;\n})(commonjsGlobal);\n/* jshint ignore:end */\n});\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 the base URL is relative then combine with the current location\n\n\n if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = urlToolkit.buildAbsoluteURL(window$1.location.href, baseUrl);\n }\n\n return urlToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\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 * Functions for calculating the range of available segments in static and dynamic\n * manifests.\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 return {\n start: 0,\n end: 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 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: 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$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\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 / timescale;\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 addSegmentsToPlaylist = function addSegmentsToPlaylist(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 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 addSegmentInfoFromSidx = function addSegmentInfoFromSidx(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 var playlist = playlists[i];\n\n if (!playlist.sidx) {\n continue;\n }\n\n var sidxKey = playlist.sidx.uri + '-' + byteRangeToString(playlist.sidx.byterange);\n var sidxMatch = sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (playlist.sidx && sidxMatch) {\n addSegmentsToPlaylist(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n }\n\n return playlists;\n};\n\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref) {\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 return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _attributes2;\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 return {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\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) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\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 = 'main';\n\n if (language) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n } // skip if we already have the highest quality audio for a language\n\n\n if (a[label] && a[label].playlists[0].attributes.BANDWIDTH > playlist.attributes.bandwidth) {\n return a;\n }\n\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: addSegmentInfoFromSidx([formatAudioPlaylist(playlist)], sidxMapping),\n uri: ''\n };\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'; // skip if we already have subtitles\n\n if (a[label]) {\n return a;\n }\n\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: addSegmentInfoFromSidx([formatVttPlaylist(playlist)], sidxMapping),\n uri: ''\n };\n return a;\n }, {});\n};\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes3;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx;\n var playlist = {\n attributes: (_attributes3 = {\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 }, _attributes3['PROGRAM-ID'] = 1, _attributes3),\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};\nvar toM3u8 = function toM3u8(dashPlaylists, 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.minimumUpdatePeriod,\n minimumUpdatePeriod = _dashPlaylists$0$attr2 === void 0 ? 0 : _dashPlaylists$0$attr2;\n\n var videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.contentType === 'video';\n };\n\n var audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.contentType === 'audio';\n };\n\n var vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n };\n\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = dashPlaylists.filter(vttOnly);\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: addSegmentInfoFromSidx(videoPlaylists, sidxMapping),\n minimumUpdatePeriod: minimumUpdatePeriod * 1000\n };\n\n if (audioPlaylists.length) {\n master.mediaGroups.AUDIO.audio = organizeAudioPlaylists(audioPlaylists, sidxMapping);\n }\n\n if (vttPlaylists.length) {\n master.mediaGroups.SUBTITLES.subs = organizeVttPlaylists(vttPlaylists, sidxMapping);\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 return {\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};\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 } 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 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 aprsed timescale\n */\n timescale: function timescale(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\nfunction decodeB64ToUint8Array(b64Text) {\n var decodedString = window$1.atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\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};\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\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 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$1.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 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 return flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)));\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new window$1.DOMParser();\n var xml = parser.parseFromString(manifestString, 'application/xml');\n var mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\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;\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n return toM3u8(toPlaylists(inheritAttributes(stringToMpdXml(manifestString), options)), 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\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, parse, parseUTCTiming };\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about MP4s.\n */\n'use strict';\n\nvar toUnsigned = require('../utils/bin').toUnsigned;\nvar toHexString = require('../utils/bin').toHexString;\nvar findBox, parseType, timescale, startTime, getVideoTrackIds, getTracks;\n\n// Find the data for a box specified by its path\nfindBox = function(data, path) {\n var results = [],\n i, size, type, end, subresults;\n\n if (!path.length) {\n // short-circuit the search for empty paths\n return null;\n }\n\n for (i = 0; i < data.byteLength;) {\n size = toUnsigned(data[i] << 24 |\n data[i + 1] << 16 |\n data[i + 2] << 8 |\n data[i + 3]);\n\n type = parseType(data.subarray(i + 4, i + 8));\n\n end = size > 1 ? i + size : data.byteLength;\n\n if (type === path[0]) {\n if (path.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.subarray(i + 8, end));\n } else {\n // recursively search for the next box along the path\n subresults = findBox(data.subarray(i + 8, end), path.slice(1));\n if (subresults.length) {\n results = results.concat(subresults);\n }\n }\n }\n i = end;\n }\n\n // we've finished searching all of data\n return results;\n};\n\n/**\n * Returns the string representation of an ASCII encoded four byte buffer.\n * @param buffer {Uint8Array} a four-byte buffer to translate\n * @return {string} the corresponding string\n */\nparseType = function(buffer) {\n var result = '';\n result += String.fromCharCode(buffer[0]);\n result += String.fromCharCode(buffer[1]);\n result += String.fromCharCode(buffer[2]);\n result += String.fromCharCode(buffer[3]);\n return result;\n};\n\n/**\n * Parses an MP4 initialization segment and extracts the timescale\n * values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * ```\n * @param init {Uint8Array} the bytes of the init segment\n * @return {object} a hash of track ids to timescale values or null if\n * the init segment is malformed.\n */\ntimescale = function(init) {\n var\n result = {},\n traks = findBox(init, ['moov', 'trak']);\n\n // mdhd timescale\n return traks.reduce(function(result, trak) {\n var tkhd, version, index, id, mdhd;\n\n tkhd = findBox(trak, ['tkhd'])[0];\n if (!tkhd) {\n return null;\n }\n version = tkhd[0];\n index = version === 0 ? 12 : 20;\n id = toUnsigned(tkhd[index] << 24 |\n tkhd[index + 1] << 16 |\n tkhd[index + 2] << 8 |\n tkhd[index + 3]);\n\n mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n if (!mdhd) {\n return null;\n }\n version = mdhd[0];\n index = version === 0 ? 12 : 20;\n result[id] = toUnsigned(mdhd[index] << 24 |\n mdhd[index + 1] << 16 |\n mdhd[index + 2] << 8 |\n mdhd[index + 3]);\n return result;\n }, result);\n};\n\n/**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param timescale {object} a hash of track ids to timescale values.\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\nstartTime = function(timescale, fragment) {\n var trafs, baseTimes, result;\n\n // we need info from two childrend of each track fragment box\n trafs = findBox(fragment, ['moof', 'traf']);\n\n // determine the start times for each track\n baseTimes = [].concat.apply([], trafs.map(function(traf) {\n return findBox(traf, ['tfhd']).map(function(tfhd) {\n var id, scale, baseTime;\n\n // get the track id from the tfhd\n id = toUnsigned(tfhd[4] << 24 |\n tfhd[5] << 16 |\n tfhd[6] << 8 |\n tfhd[7]);\n // assume a 90kHz clock if no timescale was specified\n scale = timescale[id] || 90e3;\n\n // get the base media decode time from the tfdt\n baseTime = findBox(traf, ['tfdt']).map(function(tfdt) {\n var version, result;\n\n version = tfdt[0];\n result = toUnsigned(tfdt[4] << 24 |\n tfdt[5] << 16 |\n tfdt[6] << 8 |\n tfdt[7]);\n if (version === 1) {\n result *= Math.pow(2, 32);\n result += toUnsigned(tfdt[8] << 24 |\n tfdt[9] << 16 |\n tfdt[10] << 8 |\n tfdt[11]);\n }\n return result;\n })[0];\n baseTime = baseTime || Infinity;\n\n // convert base time to seconds\n return baseTime / scale;\n });\n }));\n\n // return the minimum\n result = Math.min.apply(null, baseTimes);\n return isFinite(result) ? result : 0;\n};\n\n/**\n * Find the trackIds of the video tracks in this source.\n * Found by parsing the Handler Reference and Track Header Boxes:\n * moov > trak > mdia > hdlr\n * moov > trak > tkhd\n *\n * @param {Uint8Array} init - The bytes of the init segment for this source\n * @return {Number[]} A list of trackIds\n *\n * @see ISO-BMFF-12/2015, Section 8.4.3\n **/\ngetVideoTrackIds = function(init) {\n var traks = findBox(init, ['moov', 'trak']);\n var videoTrackIds = [];\n\n traks.forEach(function(trak) {\n var hdlrs = findBox(trak, ['mdia', 'hdlr']);\n var tkhds = findBox(trak, ['tkhd']);\n\n hdlrs.forEach(function(hdlr, index) {\n var handlerType = parseType(hdlr.subarray(8, 12));\n var tkhd = tkhds[index];\n var view;\n var version;\n var trackId;\n\n if (handlerType === 'vide') {\n view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n version = view.getUint8(0);\n trackId = (version === 0) ? view.getUint32(12) : view.getUint32(20);\n\n videoTrackIds.push(trackId);\n }\n });\n });\n\n return videoTrackIds;\n};\n\n/**\n * Get all the video, audio, and hint tracks from a non fragmented\n * mp4 segment\n */\ngetTracks = function(init) {\n var traks = findBox(init, ['moov', 'trak']);\n var tracks = [];\n\n traks.forEach(function(trak) {\n var track = {};\n var tkhd = findBox(trak, ['tkhd'])[0];\n var view, version;\n\n // id\n if (tkhd) {\n view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n version = view.getUint8(0);\n\n track.id = (version === 0) ? view.getUint32(12) : view.getUint32(20);\n }\n\n var hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n\n // type\n if (hdlr) {\n var type = parseType(hdlr.subarray(8, 12));\n\n if (type === 'vide') {\n track.type = 'video';\n } else if (type === 'soun') {\n track.type = 'audio';\n } else {\n track.type = type;\n }\n }\n\n\n // codec\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n\n if (stsd) {\n var sampleDescriptions = stsd.subarray(8);\n // gives the codec type string\n track.codec = parseType(sampleDescriptions.subarray(4, 8));\n\n var codecBox = findBox(sampleDescriptions, [track.codec])[0];\n var codecConfig, codecConfigType;\n\n if (codecBox) {\n // https://tools.ietf.org/html/rfc6381#section-3.3\n if ((/^[a-z]vc[1-9]$/i).test(track.codec)) {\n // we don't need anything but the \"config\" parameter of the\n // avc1 codecBox\n codecConfig = codecBox.subarray(78);\n codecConfigType = parseType(codecConfig.subarray(4, 8));\n\n if (codecConfigType === 'avcC' && codecConfig.length > 11) {\n track.codec += '.';\n\n // left padded with zeroes for single digit hex\n // profile idc\n track.codec += toHexString(codecConfig[9]);\n // the byte containing the constraint_set flags\n track.codec += toHexString(codecConfig[10]);\n // level idc\n track.codec += toHexString(codecConfig[11]);\n } else {\n // TODO: show a warning that we couldn't parse the codec\n // and are using the default\n track.codec = 'avc1.4d400d';\n }\n } else if ((/^mp4[a,v]$/i).test(track.codec)) {\n // we do not need anything but the streamDescriptor of the mp4a codecBox\n codecConfig = codecBox.subarray(28);\n codecConfigType = parseType(codecConfig.subarray(4, 8));\n\n if (codecConfigType === 'esds' && codecConfig.length > 20 && codecConfig[19] !== 0) {\n track.codec += '.' + toHexString(codecConfig[19]);\n // this value is only a single digit\n track.codec += '.' + toHexString((codecConfig[20] >>> 2) & 0x3f).replace(/^0/, '');\n } else {\n // TODO: show a warning that we couldn't parse the codec\n // and are using the default\n track.codec = 'mp4a.40.2';\n }\n } else {\n // TODO: show a warning? for unknown codec type\n }\n }\n }\n\n var mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n\n if (mdhd && tkhd) {\n var index = version === 0 ? 12 : 20;\n\n track.timescale = toUnsigned(mdhd[index] << 24 |\n mdhd[index + 1] << 16 |\n mdhd[index + 2] << 8 |\n mdhd[index + 3]);\n }\n\n tracks.push(track);\n });\n\n return tracks;\n};\n\nmodule.exports = {\n findBox: findBox,\n parseType: parseType,\n timescale: timescale,\n startTime: startTime,\n videoTrackIds: getVideoTrackIds,\n tracks: getTracks\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar toUnsigned = function(value) {\n return value >>> 0;\n};\n\nvar toHexString = function(value) {\n return ('00' + value.toString(16)).slice(-2);\n};\n\nmodule.exports = {\n toUnsigned: toUnsigned,\n toHexString: toHexString\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Parse the internal MP4 structure into an equivalent javascript\n * object.\n */\n'use strict';\n\nvar\n inspectMp4,\n textifyMp4,\n\n parseType = require('../mp4/probe').parseType,\n parseMp4Date = function(seconds) {\n return new Date(seconds * 1000 - 2082844800000);\n },\n parseSampleFlags = function(flags) {\n return {\n isLeading: (flags[0] & 0x0c) >>> 2,\n dependsOn: flags[0] & 0x03,\n isDependedOn: (flags[1] & 0xc0) >>> 6,\n hasRedundancy: (flags[1] & 0x30) >>> 4,\n paddingValue: (flags[1] & 0x0e) >>> 1,\n isNonSyncSample: flags[1] & 0x01,\n degradationPriority: (flags[2] << 8) | flags[3]\n };\n },\n nalParse = function(avcStream) {\n var\n avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength),\n result = [],\n i,\n length;\n for (i = 0; i + 4 < avcStream.length; i += length) {\n length = avcView.getUint32(i);\n i += 4;\n\n // bail if this doesn't appear to be an H264 stream\n if (length <= 0) {\n result.push('MALFORMED DATA');\n continue;\n }\n\n switch (avcStream[i] & 0x1F) {\n case 0x01:\n result.push('slice_layer_without_partitioning_rbsp');\n break;\n case 0x05:\n result.push('slice_layer_without_partitioning_rbsp_idr');\n break;\n case 0x06:\n result.push('sei_rbsp');\n break;\n case 0x07:\n result.push('seq_parameter_set_rbsp');\n break;\n case 0x08:\n result.push('pic_parameter_set_rbsp');\n break;\n case 0x09:\n result.push('access_unit_delimiter_rbsp');\n break;\n default:\n result.push('UNKNOWN NAL - ' + avcStream[i] & 0x1F);\n break;\n }\n }\n return result;\n },\n\n // registry of handlers for individual mp4 box types\n parse = {\n // codingname, not a first-class box type. stsd entries share the\n // same format as real boxes so the parsing infrastructure can be\n // shared\n avc1: function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n dataReferenceIndex: view.getUint16(6),\n width: view.getUint16(24),\n height: view.getUint16(26),\n horizresolution: view.getUint16(28) + (view.getUint16(30) / 16),\n vertresolution: view.getUint16(32) + (view.getUint16(34) / 16),\n frameCount: view.getUint16(40),\n depth: view.getUint16(74),\n config: inspectMp4(data.subarray(78, data.byteLength))\n };\n },\n avcC: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n configurationVersion: data[0],\n avcProfileIndication: data[1],\n profileCompatibility: data[2],\n avcLevelIndication: data[3],\n lengthSizeMinusOne: data[4] & 0x03,\n sps: [],\n pps: []\n },\n numOfSequenceParameterSets = data[5] & 0x1f,\n numOfPictureParameterSets,\n nalSize,\n offset,\n i;\n\n // iterate past any SPSs\n offset = 6;\n for (i = 0; i < numOfSequenceParameterSets; i++) {\n nalSize = view.getUint16(offset);\n offset += 2;\n result.sps.push(new Uint8Array(data.subarray(offset, offset + nalSize)));\n offset += nalSize;\n }\n // iterate past any PPSs\n numOfPictureParameterSets = data[offset];\n offset++;\n for (i = 0; i < numOfPictureParameterSets; i++) {\n nalSize = view.getUint16(offset);\n offset += 2;\n result.pps.push(new Uint8Array(data.subarray(offset, offset + nalSize)));\n offset += nalSize;\n }\n return result;\n },\n btrt: function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n bufferSizeDB: view.getUint32(0),\n maxBitrate: view.getUint32(4),\n avgBitrate: view.getUint32(8)\n };\n },\n esds: function(data) {\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n esId: (data[6] << 8) | data[7],\n streamPriority: data[8] & 0x1f,\n decoderConfig: {\n objectProfileIndication: data[11],\n streamType: (data[12] >>> 2) & 0x3f,\n bufferSize: (data[13] << 16) | (data[14] << 8) | data[15],\n maxBitrate: (data[16] << 24) |\n (data[17] << 16) |\n (data[18] << 8) |\n data[19],\n avgBitrate: (data[20] << 24) |\n (data[21] << 16) |\n (data[22] << 8) |\n data[23],\n decoderConfigDescriptor: {\n tag: data[24],\n length: data[25],\n audioObjectType: (data[26] >>> 3) & 0x1f,\n samplingFrequencyIndex: ((data[26] & 0x07) << 1) |\n ((data[27] >>> 7) & 0x01),\n channelConfiguration: (data[27] >>> 3) & 0x0f\n }\n }\n };\n },\n ftyp: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n majorBrand: parseType(data.subarray(0, 4)),\n minorVersion: view.getUint32(4),\n compatibleBrands: []\n },\n i = 8;\n while (i < data.byteLength) {\n result.compatibleBrands.push(parseType(data.subarray(i, i + 4)));\n i += 4;\n }\n return result;\n },\n dinf: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n dref: function(data) {\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n dataReferences: inspectMp4(data.subarray(8))\n };\n },\n hdlr: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: view.getUint8(0),\n flags: new Uint8Array(data.subarray(1, 4)),\n handlerType: parseType(data.subarray(8, 12)),\n name: ''\n },\n i = 8;\n\n // parse out the name field\n for (i = 24; i < data.byteLength; i++) {\n if (data[i] === 0x00) {\n // the name field is null-terminated\n i++;\n break;\n }\n result.name += String.fromCharCode(data[i]);\n }\n // decode UTF-8 to javascript's internal representation\n // see http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html\n result.name = decodeURIComponent(escape(result.name));\n\n return result;\n },\n mdat: function(data) {\n return {\n byteLength: data.byteLength,\n nals: nalParse(data)\n };\n },\n mdhd: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n i = 4,\n language,\n result = {\n version: view.getUint8(0),\n flags: new Uint8Array(data.subarray(1, 4)),\n language: ''\n };\n if (result.version === 1) {\n i += 4;\n result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes\n i += 8;\n result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes\n i += 4;\n result.timescale = view.getUint32(i);\n i += 8;\n result.duration = view.getUint32(i); // truncating top 4 bytes\n } else {\n result.creationTime = parseMp4Date(view.getUint32(i));\n i += 4;\n result.modificationTime = parseMp4Date(view.getUint32(i));\n i += 4;\n result.timescale = view.getUint32(i);\n i += 4;\n result.duration = view.getUint32(i);\n }\n i += 4;\n // language is stored as an ISO-639-2/T code in an array of three 5-bit fields\n // each field is the packed difference between its ASCII value and 0x60\n language = view.getUint16(i);\n result.language += String.fromCharCode((language >> 10) + 0x60);\n result.language += String.fromCharCode(((language & 0x03e0) >> 5) + 0x60);\n result.language += String.fromCharCode((language & 0x1f) + 0x60);\n\n return result;\n },\n mdia: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n mfhd: function(data) {\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n sequenceNumber: (data[4] << 24) |\n (data[5] << 16) |\n (data[6] << 8) |\n (data[7])\n };\n },\n minf: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n // codingname, not a first-class box type. stsd entries share the\n // same format as real boxes so the parsing infrastructure can be\n // shared\n mp4a: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n // 6 bytes reserved\n dataReferenceIndex: view.getUint16(6),\n // 4 + 4 bytes reserved\n channelcount: view.getUint16(16),\n samplesize: view.getUint16(18),\n // 2 bytes pre_defined\n // 2 bytes reserved\n samplerate: view.getUint16(24) + (view.getUint16(26) / 65536)\n };\n\n // if there are more bytes to process, assume this is an ISO/IEC\n // 14496-14 MP4AudioSampleEntry and parse the ESDBox\n if (data.byteLength > 28) {\n result.streamDescriptor = inspectMp4(data.subarray(28))[0];\n }\n return result;\n },\n moof: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n moov: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n mvex: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n mvhd: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n i = 4,\n result = {\n version: view.getUint8(0),\n flags: new Uint8Array(data.subarray(1, 4))\n };\n\n if (result.version === 1) {\n i += 4;\n result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes\n i += 8;\n result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes\n i += 4;\n result.timescale = view.getUint32(i);\n i += 8;\n result.duration = view.getUint32(i); // truncating top 4 bytes\n } else {\n result.creationTime = parseMp4Date(view.getUint32(i));\n i += 4;\n result.modificationTime = parseMp4Date(view.getUint32(i));\n i += 4;\n result.timescale = view.getUint32(i);\n i += 4;\n result.duration = view.getUint32(i);\n }\n i += 4;\n\n // convert fixed-point, base 16 back to a number\n result.rate = view.getUint16(i) + (view.getUint16(i + 2) / 16);\n i += 4;\n result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8);\n i += 2;\n i += 2;\n i += 2 * 4;\n result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4)));\n i += 9 * 4;\n i += 6 * 4;\n result.nextTrackId = view.getUint32(i);\n return result;\n },\n pdin: function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n version: view.getUint8(0),\n flags: new Uint8Array(data.subarray(1, 4)),\n rate: view.getUint32(4),\n initialDelay: view.getUint32(8)\n };\n },\n sdtp: function(data) {\n var\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n samples: []\n }, i;\n\n for (i = 4; i < data.byteLength; i++) {\n result.samples.push({\n dependsOn: (data[i] & 0x30) >> 4,\n isDependedOn: (data[i] & 0x0c) >> 2,\n hasRedundancy: data[i] & 0x03\n });\n }\n return result;\n },\n sidx: function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8),\n earliestPresentationTime: view.getUint32(12),\n firstOffset: view.getUint32(16)\n },\n referenceCount = view.getUint16(22),\n i;\n\n for (i = 24; referenceCount; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n },\n smhd: function(data) {\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n balance: data[4] + (data[5] / 256)\n };\n },\n stbl: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n stco: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n chunkOffsets: []\n },\n entryCount = view.getUint32(4),\n i;\n for (i = 8; entryCount; i += 4, entryCount--) {\n result.chunkOffsets.push(view.getUint32(i));\n }\n return result;\n },\n stsc: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n entryCount = view.getUint32(4),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n sampleToChunks: []\n },\n i;\n for (i = 8; entryCount; i += 12, entryCount--) {\n result.sampleToChunks.push({\n firstChunk: view.getUint32(i),\n samplesPerChunk: view.getUint32(i + 4),\n sampleDescriptionIndex: view.getUint32(i + 8)\n });\n }\n return result;\n },\n stsd: function(data) {\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n sampleDescriptions: inspectMp4(data.subarray(8))\n };\n },\n stsz: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n sampleSize: view.getUint32(4),\n entries: []\n },\n i;\n for (i = 12; i < data.byteLength; i += 4) {\n result.entries.push(view.getUint32(i));\n }\n return result;\n },\n stts: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n timeToSamples: []\n },\n entryCount = view.getUint32(4),\n i;\n\n for (i = 8; entryCount; i += 8, entryCount--) {\n result.timeToSamples.push({\n sampleCount: view.getUint32(i),\n sampleDelta: view.getUint32(i + 4)\n });\n }\n return result;\n },\n styp: function(data) {\n return parse.ftyp(data);\n },\n tfdt: function(data) {\n var result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n baseMediaDecodeTime: data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7]\n };\n if (result.version === 1) {\n result.baseMediaDecodeTime *= Math.pow(2, 32);\n result.baseMediaDecodeTime += data[8] << 24 | data[9] << 16 | data[10] << 8 | data[11];\n }\n return result;\n },\n tfhd: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n trackId: view.getUint32(4)\n },\n baseDataOffsetPresent = result.flags[2] & 0x01,\n sampleDescriptionIndexPresent = result.flags[2] & 0x02,\n defaultSampleDurationPresent = result.flags[2] & 0x08,\n defaultSampleSizePresent = result.flags[2] & 0x10,\n defaultSampleFlagsPresent = result.flags[2] & 0x20,\n durationIsEmpty = result.flags[0] & 0x010000,\n defaultBaseIsMoof = result.flags[0] & 0x020000,\n i;\n\n i = 8;\n if (baseDataOffsetPresent) {\n i += 4; // truncate top 4 bytes\n // FIXME: should we read the full 64 bits?\n result.baseDataOffset = view.getUint32(12);\n i += 4;\n }\n if (sampleDescriptionIndexPresent) {\n result.sampleDescriptionIndex = view.getUint32(i);\n i += 4;\n }\n if (defaultSampleDurationPresent) {\n result.defaultSampleDuration = view.getUint32(i);\n i += 4;\n }\n if (defaultSampleSizePresent) {\n result.defaultSampleSize = view.getUint32(i);\n i += 4;\n }\n if (defaultSampleFlagsPresent) {\n result.defaultSampleFlags = view.getUint32(i);\n }\n if (durationIsEmpty) {\n result.durationIsEmpty = true;\n }\n if (!baseDataOffsetPresent && defaultBaseIsMoof) {\n result.baseDataOffsetIsMoof = true;\n }\n return result;\n },\n tkhd: function(data) {\n var\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n i = 4,\n result = {\n version: view.getUint8(0),\n flags: new Uint8Array(data.subarray(1, 4))\n };\n if (result.version === 1) {\n i += 4;\n result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes\n i += 8;\n result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes\n i += 4;\n result.trackId = view.getUint32(i);\n i += 4;\n i += 8;\n result.duration = view.getUint32(i); // truncating top 4 bytes\n } else {\n result.creationTime = parseMp4Date(view.getUint32(i));\n i += 4;\n result.modificationTime = parseMp4Date(view.getUint32(i));\n i += 4;\n result.trackId = view.getUint32(i);\n i += 4;\n i += 4;\n result.duration = view.getUint32(i);\n }\n i += 4;\n i += 2 * 4;\n result.layer = view.getUint16(i);\n i += 2;\n result.alternateGroup = view.getUint16(i);\n i += 2;\n // convert fixed-point, base 16 back to a number\n result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8);\n i += 2;\n i += 2;\n result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4)));\n i += 9 * 4;\n result.width = view.getUint16(i) + (view.getUint16(i + 2) / 16);\n i += 4;\n result.height = view.getUint16(i) + (view.getUint16(i + 2) / 16);\n return result;\n },\n traf: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n trak: function(data) {\n return {\n boxes: inspectMp4(data)\n };\n },\n trex: function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n trackId: view.getUint32(4),\n defaultSampleDescriptionIndex: view.getUint32(8),\n defaultSampleDuration: view.getUint32(12),\n defaultSampleSize: view.getUint32(16),\n sampleDependsOn: data[20] & 0x03,\n sampleIsDependedOn: (data[21] & 0xc0) >> 6,\n sampleHasRedundancy: (data[21] & 0x30) >> 4,\n samplePaddingValue: (data[21] & 0x0e) >> 1,\n sampleIsDifferenceSample: !!(data[21] & 0x01),\n sampleDegradationPriority: view.getUint16(22)\n };\n },\n trun: function(data) {\n var\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n samples: []\n },\n view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n // Flag interpretation\n dataOffsetPresent = result.flags[2] & 0x01, // compare with 2nd byte of 0x1\n firstSampleFlagsPresent = result.flags[2] & 0x04, // compare with 2nd byte of 0x4\n sampleDurationPresent = result.flags[1] & 0x01, // compare with 2nd byte of 0x100\n sampleSizePresent = result.flags[1] & 0x02, // compare with 2nd byte of 0x200\n sampleFlagsPresent = result.flags[1] & 0x04, // compare with 2nd byte of 0x400\n sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08, // compare with 2nd byte of 0x800\n sampleCount = view.getUint32(4),\n offset = 8,\n sample;\n\n if (dataOffsetPresent) {\n // 32 bit signed integer\n result.dataOffset = view.getInt32(offset);\n offset += 4;\n }\n\n // Overrides the flags for the first sample only. The order of\n // optional values will be: duration, size, compositionTimeOffset\n if (firstSampleFlagsPresent && sampleCount) {\n sample = {\n flags: parseSampleFlags(data.subarray(offset, offset + 4))\n };\n offset += 4;\n if (sampleDurationPresent) {\n sample.duration = view.getUint32(offset);\n offset += 4;\n }\n if (sampleSizePresent) {\n sample.size = view.getUint32(offset);\n offset += 4;\n }\n if (sampleCompositionTimeOffsetPresent) {\n // Note: this should be a signed int if version is 1\n sample.compositionTimeOffset = view.getUint32(offset);\n offset += 4;\n }\n result.samples.push(sample);\n sampleCount--;\n }\n\n while (sampleCount--) {\n sample = {};\n if (sampleDurationPresent) {\n sample.duration = view.getUint32(offset);\n offset += 4;\n }\n if (sampleSizePresent) {\n sample.size = view.getUint32(offset);\n offset += 4;\n }\n if (sampleFlagsPresent) {\n sample.flags = parseSampleFlags(data.subarray(offset, offset + 4));\n offset += 4;\n }\n if (sampleCompositionTimeOffsetPresent) {\n // Note: this should be a signed int if version is 1\n sample.compositionTimeOffset = view.getUint32(offset);\n offset += 4;\n }\n result.samples.push(sample);\n }\n return result;\n },\n 'url ': function(data) {\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4))\n };\n },\n vmhd: function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n graphicsmode: view.getUint16(4),\n opcolor: new Uint16Array([view.getUint16(6),\n view.getUint16(8),\n view.getUint16(10)])\n };\n }\n };\n\n\n/**\n * Return a javascript array of box objects parsed from an ISO base\n * media file.\n * @param data {Uint8Array} the binary data of the media to be inspected\n * @return {array} a javascript array of potentially nested box objects\n */\ninspectMp4 = function(data) {\n var\n i = 0,\n result = [],\n view,\n size,\n type,\n end,\n box;\n\n // Convert data from Uint8Array to ArrayBuffer, to follow Dataview API\n var ab = new ArrayBuffer(data.length);\n var v = new Uint8Array(ab);\n for (var z = 0; z < data.length; ++z) {\n v[z] = data[z];\n }\n view = new DataView(ab);\n\n while (i < data.byteLength) {\n // parse box data\n size = view.getUint32(i);\n type = parseType(data.subarray(i + 4, i + 8));\n end = size > 1 ? i + size : data.byteLength;\n\n // parse type-specific data\n box = (parse[type] || function(data) {\n return {\n data: data\n };\n })(data.subarray(i + 8, end));\n box.size = size;\n box.type = type;\n\n // store this box and move to the next\n result.push(box);\n i = end;\n }\n return result;\n};\n\n/**\n * Returns a textual representation of the javascript represtentation\n * of an MP4 file. You can use it as an alternative to\n * JSON.stringify() to compare inspected MP4s.\n * @param inspectedMp4 {array} the parsed array of boxes in an MP4\n * file\n * @param depth {number} (optional) the number of ancestor boxes of\n * the elements of inspectedMp4. Assumed to be zero if unspecified.\n * @return {string} a text representation of the parsed MP4\n */\ntextifyMp4 = function(inspectedMp4, depth) {\n var indent;\n depth = depth || 0;\n indent = new Array(depth * 2 + 1).join(' ');\n\n // iterate over all the boxes\n return inspectedMp4.map(function(box, index) {\n\n // list the box type first at the current indentation level\n return indent + box.type + '\\n' +\n\n // the type is already included and handle child boxes separately\n Object.keys(box).filter(function(key) {\n return key !== 'type' && key !== 'boxes';\n\n // output all the box properties\n }).map(function(key) {\n var prefix = indent + ' ' + key + ': ',\n value = box[key];\n\n // print out raw bytes as hexademical\n if (value instanceof Uint8Array || value instanceof Uint32Array) {\n var bytes = Array.prototype.slice.call(new Uint8Array(value.buffer, value.byteOffset, value.byteLength))\n .map(function(byte) {\n return ' ' + ('00' + byte.toString(16)).slice(-2);\n }).join('').match(/.{1,24}/g);\n if (!bytes) {\n return prefix + '<>';\n }\n if (bytes.length === 1) {\n return prefix + '<' + bytes.join('').slice(1) + '>';\n }\n return prefix + '<\\n' + bytes.map(function(line) {\n return indent + ' ' + line;\n }).join('\\n') + '\\n' + indent + ' >';\n }\n\n // stringify generic objects\n return prefix +\n JSON.stringify(value, null, 2)\n .split('\\n').map(function(line, index) {\n if (index === 0) {\n return line;\n }\n return indent + ' ' + line;\n }).join('\\n');\n }).join('\\n') +\n\n // recursively textify the child boxes\n (box.boxes ? '\\n' + textifyMp4(box.boxes, depth + 1) : '');\n }).join('\\n');\n};\n\nmodule.exports = {\n inspect: inspectMp4,\n textify: textifyMp4,\n parseTfdt: parse.tfdt,\n parseHdlr: parse.hdlr,\n parseTfhd: parse.tfhd,\n parseTrun: parse.trun,\n parseSidx: parse.sidx\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band caption information from a video elementary\n * stream. Captions must follow the CEA-708 standard for injection\n * into an MPEG-2 transport streams.\n * @see https://en.wikipedia.org/wiki/CEA-708\n * @see https://www.gpo.gov/fdsys/pkg/CFR-2007-title47-vol1/pdf/CFR-2007-title47-vol1-sec15-119.pdf\n */\n\n'use strict';\n\n// Supplemental enhancement information (SEI) NAL units have a\n// payload type field to indicate how they are to be\n// interpreted. CEAS-708 caption content is always transmitted with\n// payload type 0x04.\nvar USER_DATA_REGISTERED_ITU_T_T35 = 4,\n RBSP_TRAILING_BITS = 128;\n\n/**\n * Parse a supplemental enhancement information (SEI) NAL unit.\n * Stops parsing once a message of type ITU T T35 has been found.\n *\n * @param bytes {Uint8Array} the bytes of a SEI NAL unit\n * @return {object} the parsed SEI payload\n * @see Rec. ITU-T H.264, 7.3.2.3.1\n */\nvar parseSei = function(bytes) {\n var\n i = 0,\n result = {\n payloadType: -1,\n payloadSize: 0\n },\n payloadType = 0,\n payloadSize = 0;\n\n // go through the sei_rbsp parsing each each individual sei_message\n while (i < bytes.byteLength) {\n // stop once we have hit the end of the sei_rbsp\n if (bytes[i] === RBSP_TRAILING_BITS) {\n break;\n }\n\n // Parse payload type\n while (bytes[i] === 0xFF) {\n payloadType += 255;\n i++;\n }\n payloadType += bytes[i++];\n\n // Parse payload size\n while (bytes[i] === 0xFF) {\n payloadSize += 255;\n i++;\n }\n payloadSize += bytes[i++];\n\n // this sei_message is a 608/708 caption so save it and break\n // there can only ever be one caption message in a frame's sei\n if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) {\n result.payloadType = payloadType;\n result.payloadSize = payloadSize;\n result.payload = bytes.subarray(i, i + payloadSize);\n break;\n }\n\n // skip the payload and parse the next message\n i += payloadSize;\n payloadType = 0;\n payloadSize = 0;\n }\n\n return result;\n};\n\n// see ANSI/SCTE 128-1 (2013), section 8.1\nvar parseUserData = function(sei) {\n // itu_t_t35_contry_code must be 181 (United States) for\n // captions\n if (sei.payload[0] !== 181) {\n return null;\n }\n\n // itu_t_t35_provider_code should be 49 (ATSC) for captions\n if (((sei.payload[1] << 8) | sei.payload[2]) !== 49) {\n return null;\n }\n\n // the user_identifier should be \"GA94\" to indicate ATSC1 data\n if (String.fromCharCode(sei.payload[3],\n sei.payload[4],\n sei.payload[5],\n sei.payload[6]) !== 'GA94') {\n return null;\n }\n\n // finally, user_data_type_code should be 0x03 for caption data\n if (sei.payload[7] !== 0x03) {\n return null;\n }\n\n // return the user_data_type_structure and strip the trailing\n // marker bits\n return sei.payload.subarray(8, sei.payload.length - 1);\n};\n\n// see CEA-708-D, section 4.4\nvar parseCaptionPackets = function(pts, userData) {\n var results = [], i, count, offset, data;\n\n // if this is just filler, return immediately\n if (!(userData[0] & 0x40)) {\n return results;\n }\n\n // parse out the cc_data_1 and cc_data_2 fields\n count = userData[0] & 0x1f;\n for (i = 0; i < count; i++) {\n offset = i * 3;\n data = {\n type: userData[offset + 2] & 0x03,\n pts: pts\n };\n\n // capture cc data when cc_valid is 1\n if (userData[offset + 2] & 0x04) {\n data.ccData = (userData[offset + 3] << 8) | userData[offset + 4];\n results.push(data);\n }\n }\n return results;\n};\n\nvar discardEmulationPreventionBytes = function(data) {\n var\n length = data.byteLength,\n emulationPreventionBytesPositions = [],\n i = 1,\n newLength, newData;\n\n // Find all `Emulation Prevention Bytes`\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n emulationPreventionBytesPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n }\n\n // If no Emulation Prevention Bytes were found just return the original\n // array\n if (emulationPreventionBytesPositions.length === 0) {\n return data;\n }\n\n // Create a new array to hold the NAL unit data\n newLength = length - emulationPreventionBytesPositions.length;\n newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === emulationPreventionBytesPositions[0]) {\n // Skip this byte\n sourceIndex++;\n // Remove this position index\n emulationPreventionBytesPositions.shift();\n }\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n};\n\n// exports\nmodule.exports = {\n parseSei: parseSei,\n parseUserData: parseUserData,\n parseCaptionPackets: parseCaptionPackets,\n discardEmulationPreventionBytes: discardEmulationPreventionBytes,\n USER_DATA_REGISTERED_ITU_T_T35: USER_DATA_REGISTERED_ITU_T_T35\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * A lightweight readable stream implemention that handles event dispatching.\n * Objects that inherit from streams should call init in their constructors.\n */\n'use strict';\n\nvar Stream = function() {\n this.init = function() {\n var listeners = {};\n /**\n * Add a listener for a specified event type.\n * @param type {string} the event name\n * @param listener {function} the callback to be invoked when an event of\n * the specified type occurs\n */\n this.on = function(type, listener) {\n if (!listeners[type]) {\n listeners[type] = [];\n }\n listeners[type] = listeners[type].concat(listener);\n };\n /**\n * Remove a listener for a specified event type.\n * @param type {string} the event name\n * @param listener {function} a function previously registered for this\n * type of event through `on`\n */\n this.off = function(type, listener) {\n var index;\n if (!listeners[type]) {\n return false;\n }\n index = listeners[type].indexOf(listener);\n listeners[type] = listeners[type].slice();\n 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 * @param type {string} the event name\n */\n this.trigger = function(type) {\n var callbacks, i, length, args;\n callbacks = listeners[type];\n if (!callbacks) {\n return;\n }\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 if (arguments.length === 2) {\n length = callbacks.length;\n for (i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n args = [];\n i = arguments.length;\n for (i = 1; i < arguments.length; ++i) {\n args.push(arguments[i]);\n }\n length = callbacks.length;\n for (i = 0; i < length; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n };\n /**\n * Destroys the stream and cleans up.\n */\n this.dispose = function() {\n listeners = {};\n };\n };\n};\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 * @param destination {stream} the stream that will receive all `data` events\n * @param autoFlush {boolean} if false, we will not call `flush` on the destination\n * when the current stream emits a 'done' event\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\nStream.prototype.pipe = function(destination) {\n this.on('data', function(data) {\n destination.push(data);\n });\n\n this.on('done', function(flushSource) {\n destination.flush(flushSource);\n });\n\n this.on('partialdone', function(flushSource) {\n destination.partialFlush(flushSource);\n });\n\n this.on('endedtimeline', function(flushSource) {\n destination.endTimeline(flushSource);\n });\n\n this.on('reset', function(flushSource) {\n destination.reset(flushSource);\n });\n\n return destination;\n};\n\n// Default stream functions that are expected to be overridden to perform\n// actual work. These are provided by the prototype as a sort of no-op\n// implementation so that we don't have to check for their existence in the\n// `pipe` function above.\nStream.prototype.push = function(data) {\n this.trigger('data', data);\n};\n\nStream.prototype.flush = function(flushSource) {\n this.trigger('done', flushSource);\n};\n\nStream.prototype.partialFlush = function(flushSource) {\n this.trigger('partialdone', flushSource);\n};\n\nStream.prototype.endTimeline = function(flushSource) {\n this.trigger('endedtimeline', flushSource);\n};\n\nStream.prototype.reset = function(flushSource) {\n this.trigger('reset', flushSource);\n};\n\nmodule.exports = Stream;\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band caption information from a video elementary\n * stream. Captions must follow the CEA-708 standard for injection\n * into an MPEG-2 transport streams.\n * @see https://en.wikipedia.org/wiki/CEA-708\n * @see https://www.gpo.gov/fdsys/pkg/CFR-2007-title47-vol1/pdf/CFR-2007-title47-vol1-sec15-119.pdf\n */\n\n'use strict';\n\n// -----------------\n// Link To Transport\n// -----------------\n\nvar Stream = require('../utils/stream');\nvar cea708Parser = require('../tools/caption-packet-parser');\n\nvar CaptionStream = function() {\n\n CaptionStream.prototype.init.call(this);\n\n this.captionPackets_ = [];\n\n this.ccStreams_ = [\n new Cea608Stream(0, 0), // eslint-disable-line no-use-before-define\n new Cea608Stream(0, 1), // eslint-disable-line no-use-before-define\n new Cea608Stream(1, 0), // eslint-disable-line no-use-before-define\n new Cea608Stream(1, 1) // eslint-disable-line no-use-before-define\n ];\n\n this.reset();\n\n // forward data and done events from CCs to this CaptionStream\n this.ccStreams_.forEach(function(cc) {\n cc.on('data', this.trigger.bind(this, 'data'));\n cc.on('partialdone', this.trigger.bind(this, 'partialdone'));\n cc.on('done', this.trigger.bind(this, 'done'));\n }, this);\n\n};\n\nCaptionStream.prototype = new Stream();\nCaptionStream.prototype.push = function(event) {\n var sei, userData, newCaptionPackets;\n\n // only examine SEI NALs\n if (event.nalUnitType !== 'sei_rbsp') {\n return;\n }\n\n // parse the sei\n sei = cea708Parser.parseSei(event.escapedRBSP);\n\n // ignore everything but user_data_registered_itu_t_t35\n if (sei.payloadType !== cea708Parser.USER_DATA_REGISTERED_ITU_T_T35) {\n return;\n }\n\n // parse out the user data payload\n userData = cea708Parser.parseUserData(sei);\n\n // ignore unrecognized userData\n if (!userData) {\n return;\n }\n\n // Sometimes, the same segment # will be downloaded twice. To stop the\n // caption data from being processed twice, we track the latest dts we've\n // received and ignore everything with a dts before that. However, since\n // data for a specific dts can be split across packets on either side of\n // a segment boundary, we need to make sure we *don't* ignore the packets\n // from the *next* segment that have dts === this.latestDts_. By constantly\n // tracking the number of packets received with dts === this.latestDts_, we\n // know how many should be ignored once we start receiving duplicates.\n if (event.dts < this.latestDts_) {\n // We've started getting older data, so set the flag.\n this.ignoreNextEqualDts_ = true;\n return;\n } else if ((event.dts === this.latestDts_) && (this.ignoreNextEqualDts_)) {\n this.numSameDts_--;\n if (!this.numSameDts_) {\n // We've received the last duplicate packet, time to start processing again\n this.ignoreNextEqualDts_ = false;\n }\n return;\n }\n\n // parse out CC data packets and save them for later\n newCaptionPackets = cea708Parser.parseCaptionPackets(event.pts, userData);\n this.captionPackets_ = this.captionPackets_.concat(newCaptionPackets);\n if (this.latestDts_ !== event.dts) {\n this.numSameDts_ = 0;\n }\n this.numSameDts_++;\n this.latestDts_ = event.dts;\n};\n\nCaptionStream.prototype.flushCCStreams = function(flushType) {\n this.ccStreams_.forEach(function(cc) {\n return flushType === 'flush' ? cc.flush() : cc.partialFlush();\n }, this);\n};\n\nCaptionStream.prototype.flushStream = function(flushType) {\n // make sure we actually parsed captions before proceeding\n if (!this.captionPackets_.length) {\n this.flushCCStreams(flushType);\n return;\n }\n\n // In Chrome, the Array#sort function is not stable so add a\n // presortIndex that we can use to ensure we get a stable-sort\n this.captionPackets_.forEach(function(elem, idx) {\n elem.presortIndex = idx;\n });\n\n // sort caption byte-pairs based on their PTS values\n this.captionPackets_.sort(function(a, b) {\n if (a.pts === b.pts) {\n return a.presortIndex - b.presortIndex;\n }\n return a.pts - b.pts;\n });\n\n this.captionPackets_.forEach(function(packet) {\n if (packet.type < 2) {\n // Dispatch packet to the right Cea608Stream\n this.dispatchCea608Packet(packet);\n }\n // this is where an 'else' would go for a dispatching packets\n // to a theoretical Cea708Stream that handles SERVICEn data\n }, this);\n\n this.captionPackets_.length = 0;\n this.flushCCStreams(flushType);\n};\n\nCaptionStream.prototype.flush = function() {\n return this.flushStream('flush');\n};\n\n// Only called if handling partial data\nCaptionStream.prototype.partialFlush = function() {\n return this.flushStream('partialFlush');\n};\n\nCaptionStream.prototype.reset = function() {\n this.latestDts_ = null;\n this.ignoreNextEqualDts_ = false;\n this.numSameDts_ = 0;\n this.activeCea608Channel_ = [null, null];\n this.ccStreams_.forEach(function(ccStream) {\n ccStream.reset();\n });\n};\n\n// From the CEA-608 spec:\n/*\n * When XDS sub-packets are interleaved with other services, the end of each sub-packet shall be followed\n * by a control pair to change to a different service. When any of the control codes from 0x10 to 0x1F is\n * used to begin a control code pair, it indicates the return to captioning or Text data. The control code pair\n * and subsequent data should then be processed according to the FCC rules. It may be necessary for the\n * line 21 data encoder to automatically insert a control code pair (i.e. RCL, RU2, RU3, RU4, RDC, or RTD)\n * to switch to captioning or Text.\n*/\n// With that in mind, we ignore any data between an XDS control code and a\n// subsequent closed-captioning control code.\nCaptionStream.prototype.dispatchCea608Packet = function(packet) {\n // NOTE: packet.type is the CEA608 field\n if (this.setsTextOrXDSActive(packet)) {\n this.activeCea608Channel_[packet.type] = null;\n } else if (this.setsChannel1Active(packet)) {\n this.activeCea608Channel_[packet.type] = 0;\n } else if (this.setsChannel2Active(packet)) {\n this.activeCea608Channel_[packet.type] = 1;\n }\n if (this.activeCea608Channel_[packet.type] === null) {\n // If we haven't received anything to set the active channel, or the\n // packets are Text/XDS data, discard the data; we don't want jumbled\n // captions\n return;\n }\n this.ccStreams_[(packet.type << 1) + this.activeCea608Channel_[packet.type]].push(packet);\n};\n\nCaptionStream.prototype.setsChannel1Active = function(packet) {\n return ((packet.ccData & 0x7800) === 0x1000);\n};\nCaptionStream.prototype.setsChannel2Active = function(packet) {\n return ((packet.ccData & 0x7800) === 0x1800);\n};\nCaptionStream.prototype.setsTextOrXDSActive = function(packet) {\n return ((packet.ccData & 0x7100) === 0x0100) ||\n ((packet.ccData & 0x78fe) === 0x102a) ||\n ((packet.ccData & 0x78fe) === 0x182a);\n};\n\n// ----------------------\n// Session to Application\n// ----------------------\n\n// This hash maps non-ASCII, special, and extended character codes to their\n// proper Unicode equivalent. The first keys that are only a single byte\n// are the non-standard ASCII characters, which simply map the CEA608 byte\n// to the standard ASCII/Unicode. The two-byte keys that follow are the CEA608\n// character codes, but have their MSB bitmasked with 0x03 so that a lookup\n// can be performed regardless of the field and data channel on which the\n// character code was received.\nvar CHARACTER_TRANSLATION = {\n 0x2a: 0xe1, // á\n 0x5c: 0xe9, // é\n 0x5e: 0xed, // í\n 0x5f: 0xf3, // ó\n 0x60: 0xfa, // ú\n 0x7b: 0xe7, // ç\n 0x7c: 0xf7, // ÷\n 0x7d: 0xd1, // Ñ\n 0x7e: 0xf1, // ñ\n 0x7f: 0x2588, // █\n 0x0130: 0xae, // ®\n 0x0131: 0xb0, // °\n 0x0132: 0xbd, // ½\n 0x0133: 0xbf, // ¿\n 0x0134: 0x2122, // ™\n 0x0135: 0xa2, // ¢\n 0x0136: 0xa3, // £\n 0x0137: 0x266a, // ♪\n 0x0138: 0xe0, // à\n 0x0139: 0xa0, //\n 0x013a: 0xe8, // è\n 0x013b: 0xe2, // â\n 0x013c: 0xea, // ê\n 0x013d: 0xee, // î\n 0x013e: 0xf4, // ô\n 0x013f: 0xfb, // û\n 0x0220: 0xc1, // Á\n 0x0221: 0xc9, // É\n 0x0222: 0xd3, // Ó\n 0x0223: 0xda, // Ú\n 0x0224: 0xdc, // Ü\n 0x0225: 0xfc, // ü\n 0x0226: 0x2018, // ‘\n 0x0227: 0xa1, // ¡\n 0x0228: 0x2a, // *\n 0x0229: 0x27, // '\n 0x022a: 0x2014, // —\n 0x022b: 0xa9, // ©\n 0x022c: 0x2120, // ℠\n 0x022d: 0x2022, // •\n 0x022e: 0x201c, // “\n 0x022f: 0x201d, // ”\n 0x0230: 0xc0, // À\n 0x0231: 0xc2, // Â\n 0x0232: 0xc7, // Ç\n 0x0233: 0xc8, // È\n 0x0234: 0xca, // Ê\n 0x0235: 0xcb, // Ë\n 0x0236: 0xeb, // ë\n 0x0237: 0xce, // Î\n 0x0238: 0xcf, // Ï\n 0x0239: 0xef, // ï\n 0x023a: 0xd4, // Ô\n 0x023b: 0xd9, // Ù\n 0x023c: 0xf9, // ù\n 0x023d: 0xdb, // Û\n 0x023e: 0xab, // «\n 0x023f: 0xbb, // »\n 0x0320: 0xc3, // Ã\n 0x0321: 0xe3, // ã\n 0x0322: 0xcd, // Í\n 0x0323: 0xcc, // Ì\n 0x0324: 0xec, // ì\n 0x0325: 0xd2, // Ò\n 0x0326: 0xf2, // ò\n 0x0327: 0xd5, // Õ\n 0x0328: 0xf5, // õ\n 0x0329: 0x7b, // {\n 0x032a: 0x7d, // }\n 0x032b: 0x5c, // \\\n 0x032c: 0x5e, // ^\n 0x032d: 0x5f, // _\n 0x032e: 0x7c, // |\n 0x032f: 0x7e, // ~\n 0x0330: 0xc4, // Ä\n 0x0331: 0xe4, // ä\n 0x0332: 0xd6, // Ö\n 0x0333: 0xf6, // ö\n 0x0334: 0xdf, // ß\n 0x0335: 0xa5, // ¥\n 0x0336: 0xa4, // ¤\n 0x0337: 0x2502, // │\n 0x0338: 0xc5, // Å\n 0x0339: 0xe5, // å\n 0x033a: 0xd8, // Ø\n 0x033b: 0xf8, // ø\n 0x033c: 0x250c, // ┌\n 0x033d: 0x2510, // ┐\n 0x033e: 0x2514, // └\n 0x033f: 0x2518 // ┘\n};\n\nvar getCharFromCode = function(code) {\n if (code === null) {\n return '';\n }\n code = CHARACTER_TRANSLATION[code] || code;\n return String.fromCharCode(code);\n};\n\n// the index of the last row in a CEA-608 display buffer\nvar BOTTOM_ROW = 14;\n\n// This array is used for mapping PACs -> row #, since there's no way of\n// getting it through bit logic.\nvar ROWS = [0x1100, 0x1120, 0x1200, 0x1220, 0x1500, 0x1520, 0x1600, 0x1620,\n 0x1700, 0x1720, 0x1000, 0x1300, 0x1320, 0x1400, 0x1420];\n\n// CEA-608 captions are rendered onto a 34x15 matrix of character\n// cells. The \"bottom\" row is the last element in the outer array.\nvar createDisplayBuffer = function() {\n var result = [], i = BOTTOM_ROW + 1;\n while (i--) {\n result.push('');\n }\n return result;\n};\n\nvar Cea608Stream = function(field, dataChannel) {\n Cea608Stream.prototype.init.call(this);\n\n this.field_ = field || 0;\n this.dataChannel_ = dataChannel || 0;\n\n this.name_ = 'CC' + (((this.field_ << 1) | this.dataChannel_) + 1);\n\n this.setConstants();\n this.reset();\n\n this.push = function(packet) {\n var data, swap, char0, char1, text;\n // remove the parity bits\n data = packet.ccData & 0x7f7f;\n\n // ignore duplicate control codes; the spec demands they're sent twice\n if (data === this.lastControlCode_) {\n this.lastControlCode_ = null;\n return;\n }\n\n // Store control codes\n if ((data & 0xf000) === 0x1000) {\n this.lastControlCode_ = data;\n } else if (data !== this.PADDING_) {\n this.lastControlCode_ = null;\n }\n\n char0 = data >>> 8;\n char1 = data & 0xff;\n\n if (data === this.PADDING_) {\n return;\n\n } else if (data === this.RESUME_CAPTION_LOADING_) {\n this.mode_ = 'popOn';\n\n } else if (data === this.END_OF_CAPTION_) {\n // If an EOC is received while in paint-on mode, the displayed caption\n // text should be swapped to non-displayed memory as if it was a pop-on\n // caption. Because of that, we should explicitly switch back to pop-on\n // mode\n this.mode_ = 'popOn';\n this.clearFormatting(packet.pts);\n // if a caption was being displayed, it's gone now\n this.flushDisplayed(packet.pts);\n\n // flip memory\n swap = this.displayed_;\n this.displayed_ = this.nonDisplayed_;\n this.nonDisplayed_ = swap;\n\n // start measuring the time to display the caption\n this.startPts_ = packet.pts;\n\n } else if (data === this.ROLL_UP_2_ROWS_) {\n this.rollUpRows_ = 2;\n this.setRollUp(packet.pts);\n } else if (data === this.ROLL_UP_3_ROWS_) {\n this.rollUpRows_ = 3;\n this.setRollUp(packet.pts);\n } else if (data === this.ROLL_UP_4_ROWS_) {\n this.rollUpRows_ = 4;\n this.setRollUp(packet.pts);\n } else if (data === this.CARRIAGE_RETURN_) {\n this.clearFormatting(packet.pts);\n this.flushDisplayed(packet.pts);\n this.shiftRowsUp_();\n this.startPts_ = packet.pts;\n\n } else if (data === this.BACKSPACE_) {\n if (this.mode_ === 'popOn') {\n this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1);\n } else {\n this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1);\n }\n } else if (data === this.ERASE_DISPLAYED_MEMORY_) {\n this.flushDisplayed(packet.pts);\n this.displayed_ = createDisplayBuffer();\n } else if (data === this.ERASE_NON_DISPLAYED_MEMORY_) {\n this.nonDisplayed_ = createDisplayBuffer();\n\n } else if (data === this.RESUME_DIRECT_CAPTIONING_) {\n if (this.mode_ !== 'paintOn') {\n // NOTE: This should be removed when proper caption positioning is\n // implemented\n this.flushDisplayed(packet.pts);\n this.displayed_ = createDisplayBuffer();\n }\n this.mode_ = 'paintOn';\n this.startPts_ = packet.pts;\n\n // Append special characters to caption text\n } else if (this.isSpecialCharacter(char0, char1)) {\n // Bitmask char0 so that we can apply character transformations\n // regardless of field and data channel.\n // Then byte-shift to the left and OR with char1 so we can pass the\n // entire character code to `getCharFromCode`.\n char0 = (char0 & 0x03) << 8;\n text = getCharFromCode(char0 | char1);\n this[this.mode_](packet.pts, text);\n this.column_++;\n\n // Append extended characters to caption text\n } else if (this.isExtCharacter(char0, char1)) {\n // Extended characters always follow their \"non-extended\" equivalents.\n // IE if a \"è\" is desired, you'll always receive \"eè\"; non-compliant\n // decoders are supposed to drop the \"è\", while compliant decoders\n // backspace the \"e\" and insert \"è\".\n\n // Delete the previous character\n if (this.mode_ === 'popOn') {\n this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1);\n } else {\n this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1);\n }\n\n // Bitmask char0 so that we can apply character transformations\n // regardless of field and data channel.\n // Then byte-shift to the left and OR with char1 so we can pass the\n // entire character code to `getCharFromCode`.\n char0 = (char0 & 0x03) << 8;\n text = getCharFromCode(char0 | char1);\n this[this.mode_](packet.pts, text);\n this.column_++;\n\n // Process mid-row codes\n } else if (this.isMidRowCode(char0, char1)) {\n // Attributes are not additive, so clear all formatting\n this.clearFormatting(packet.pts);\n\n // According to the standard, mid-row codes\n // should be replaced with spaces, so add one now\n this[this.mode_](packet.pts, ' ');\n this.column_++;\n\n if ((char1 & 0xe) === 0xe) {\n this.addFormatting(packet.pts, ['i']);\n }\n\n if ((char1 & 0x1) === 0x1) {\n this.addFormatting(packet.pts, ['u']);\n }\n\n // Detect offset control codes and adjust cursor\n } else if (this.isOffsetControlCode(char0, char1)) {\n // Cursor position is set by indent PAC (see below) in 4-column\n // increments, with an additional offset code of 1-3 to reach any\n // of the 32 columns specified by CEA-608. So all we need to do\n // here is increment the column cursor by the given offset.\n this.column_ += (char1 & 0x03);\n\n // Detect PACs (Preamble Address Codes)\n } else if (this.isPAC(char0, char1)) {\n\n // There's no logic for PAC -> row mapping, so we have to just\n // find the row code in an array and use its index :(\n var row = ROWS.indexOf(data & 0x1f20);\n\n // Configure the caption window if we're in roll-up mode\n if (this.mode_ === 'rollUp') {\n // This implies that the base row is incorrectly set.\n // As per the recommendation in CEA-608(Base Row Implementation), defer to the number\n // of roll-up rows set.\n if (row - this.rollUpRows_ + 1 < 0) {\n row = this.rollUpRows_ - 1;\n }\n\n this.setRollUp(packet.pts, row);\n }\n\n if (row !== this.row_) {\n // formatting is only persistent for current row\n this.clearFormatting(packet.pts);\n this.row_ = row;\n }\n // All PACs can apply underline, so detect and apply\n // (All odd-numbered second bytes set underline)\n if ((char1 & 0x1) && (this.formatting_.indexOf('u') === -1)) {\n this.addFormatting(packet.pts, ['u']);\n }\n\n if ((data & 0x10) === 0x10) {\n // We've got an indent level code. Each successive even number\n // increments the column cursor by 4, so we can get the desired\n // column position by bit-shifting to the right (to get n/2)\n // and multiplying by 4.\n this.column_ = ((data & 0xe) >> 1) * 4;\n }\n\n if (this.isColorPAC(char1)) {\n // it's a color code, though we only support white, which\n // can be either normal or italicized. white italics can be\n // either 0x4e or 0x6e depending on the row, so we just\n // bitwise-and with 0xe to see if italics should be turned on\n if ((char1 & 0xe) === 0xe) {\n this.addFormatting(packet.pts, ['i']);\n }\n }\n\n // We have a normal character in char0, and possibly one in char1\n } else if (this.isNormalChar(char0)) {\n if (char1 === 0x00) {\n char1 = null;\n }\n text = getCharFromCode(char0);\n text += getCharFromCode(char1);\n this[this.mode_](packet.pts, text);\n this.column_ += text.length;\n\n } // finish data processing\n\n };\n};\nCea608Stream.prototype = new Stream();\n// Trigger a cue point that captures the current state of the\n// display buffer\nCea608Stream.prototype.flushDisplayed = function(pts) {\n var content = this.displayed_\n // remove spaces from the start and end of the string\n .map(function(row) {\n try {\n return row.trim();\n } catch (e) {\n // Ordinarily, this shouldn't happen. However, caption\n // parsing errors should not throw exceptions and\n // break playback.\n // eslint-disable-next-line no-console\n console.error('Skipping malformed caption.');\n return '';\n }\n })\n // combine all text rows to display in one cue\n .join('\\n')\n // and remove blank rows from the start and end, but not the middle\n .replace(/^\\n+|\\n+$/g, '');\n\n if (content.length) {\n this.trigger('data', {\n startPts: this.startPts_,\n endPts: pts,\n text: content,\n stream: this.name_\n });\n }\n};\n\n/**\n * Zero out the data, used for startup and on seek\n */\nCea608Stream.prototype.reset = function() {\n this.mode_ = 'popOn';\n // When in roll-up mode, the index of the last row that will\n // actually display captions. If a caption is shifted to a row\n // with a lower index than this, it is cleared from the display\n // buffer\n this.topRow_ = 0;\n this.startPts_ = 0;\n this.displayed_ = createDisplayBuffer();\n this.nonDisplayed_ = createDisplayBuffer();\n this.lastControlCode_ = null;\n\n // Track row and column for proper line-breaking and spacing\n this.column_ = 0;\n this.row_ = BOTTOM_ROW;\n this.rollUpRows_ = 2;\n\n // This variable holds currently-applied formatting\n this.formatting_ = [];\n};\n\n/**\n * Sets up control code and related constants for this instance\n */\nCea608Stream.prototype.setConstants = function() {\n // The following attributes have these uses:\n // ext_ : char0 for mid-row codes, and the base for extended\n // chars (ext_+0, ext_+1, and ext_+2 are char0s for\n // extended codes)\n // control_: char0 for control codes, except byte-shifted to the\n // left so that we can do this.control_ | CONTROL_CODE\n // offset_: char0 for tab offset codes\n //\n // It's also worth noting that control codes, and _only_ control codes,\n // differ between field 1 and field2. Field 2 control codes are always\n // their field 1 value plus 1. That's why there's the \"| field\" on the\n // control value.\n if (this.dataChannel_ === 0) {\n this.BASE_ = 0x10;\n this.EXT_ = 0x11;\n this.CONTROL_ = (0x14 | this.field_) << 8;\n this.OFFSET_ = 0x17;\n } else if (this.dataChannel_ === 1) {\n this.BASE_ = 0x18;\n this.EXT_ = 0x19;\n this.CONTROL_ = (0x1c | this.field_) << 8;\n this.OFFSET_ = 0x1f;\n }\n\n // Constants for the LSByte command codes recognized by Cea608Stream. This\n // list is not exhaustive. For a more comprehensive listing and semantics see\n // http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf\n // Padding\n this.PADDING_ = 0x0000;\n // Pop-on Mode\n this.RESUME_CAPTION_LOADING_ = this.CONTROL_ | 0x20;\n this.END_OF_CAPTION_ = this.CONTROL_ | 0x2f;\n // Roll-up Mode\n this.ROLL_UP_2_ROWS_ = this.CONTROL_ | 0x25;\n this.ROLL_UP_3_ROWS_ = this.CONTROL_ | 0x26;\n this.ROLL_UP_4_ROWS_ = this.CONTROL_ | 0x27;\n this.CARRIAGE_RETURN_ = this.CONTROL_ | 0x2d;\n // paint-on mode\n this.RESUME_DIRECT_CAPTIONING_ = this.CONTROL_ | 0x29;\n // Erasure\n this.BACKSPACE_ = this.CONTROL_ | 0x21;\n this.ERASE_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2c;\n this.ERASE_NON_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2e;\n};\n\n/**\n * Detects if the 2-byte packet data is a special character\n *\n * Special characters have a second byte in the range 0x30 to 0x3f,\n * with the first byte being 0x11 (for data channel 1) or 0x19 (for\n * data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an special character\n */\nCea608Stream.prototype.isSpecialCharacter = function(char0, char1) {\n return (char0 === this.EXT_ && char1 >= 0x30 && char1 <= 0x3f);\n};\n\n/**\n * Detects if the 2-byte packet data is an extended character\n *\n * Extended characters have a second byte in the range 0x20 to 0x3f,\n * with the first byte being 0x12 or 0x13 (for data channel 1) or\n * 0x1a or 0x1b (for data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an extended character\n */\nCea608Stream.prototype.isExtCharacter = function(char0, char1) {\n return ((char0 === (this.EXT_ + 1) || char0 === (this.EXT_ + 2)) &&\n (char1 >= 0x20 && char1 <= 0x3f));\n};\n\n/**\n * Detects if the 2-byte packet is a mid-row code\n *\n * Mid-row codes have a second byte in the range 0x20 to 0x2f, with\n * the first byte being 0x11 (for data channel 1) or 0x19 (for data\n * channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are a mid-row code\n */\nCea608Stream.prototype.isMidRowCode = function(char0, char1) {\n return (char0 === this.EXT_ && (char1 >= 0x20 && char1 <= 0x2f));\n};\n\n/**\n * Detects if the 2-byte packet is an offset control code\n *\n * Offset control codes have a second byte in the range 0x21 to 0x23,\n * with the first byte being 0x17 (for data channel 1) or 0x1f (for\n * data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an offset control code\n */\nCea608Stream.prototype.isOffsetControlCode = function(char0, char1) {\n return (char0 === this.OFFSET_ && (char1 >= 0x21 && char1 <= 0x23));\n};\n\n/**\n * Detects if the 2-byte packet is a Preamble Address Code\n *\n * PACs have a first byte in the range 0x10 to 0x17 (for data channel 1)\n * or 0x18 to 0x1f (for data channel 2), with the second byte in the\n * range 0x40 to 0x7f.\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are a PAC\n */\nCea608Stream.prototype.isPAC = function(char0, char1) {\n return (char0 >= this.BASE_ && char0 < (this.BASE_ + 8) &&\n (char1 >= 0x40 && char1 <= 0x7f));\n};\n\n/**\n * Detects if a packet's second byte is in the range of a PAC color code\n *\n * PAC color codes have the second byte be in the range 0x40 to 0x4f, or\n * 0x60 to 0x6f.\n *\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the byte is a color PAC\n */\nCea608Stream.prototype.isColorPAC = function(char1) {\n return ((char1 >= 0x40 && char1 <= 0x4f) || (char1 >= 0x60 && char1 <= 0x7f));\n};\n\n/**\n * Detects if a single byte is in the range of a normal character\n *\n * Normal text bytes are in the range 0x20 to 0x7f.\n *\n * @param {Integer} char The byte\n * @return {Boolean} Whether the byte is a normal character\n */\nCea608Stream.prototype.isNormalChar = function(char) {\n return (char >= 0x20 && char <= 0x7f);\n};\n\n/**\n * Configures roll-up\n *\n * @param {Integer} pts Current PTS\n * @param {Integer} newBaseRow Used by PACs to slide the current window to\n * a new position\n */\nCea608Stream.prototype.setRollUp = function(pts, newBaseRow) {\n // Reset the base row to the bottom row when switching modes\n if (this.mode_ !== 'rollUp') {\n this.row_ = BOTTOM_ROW;\n this.mode_ = 'rollUp';\n // Spec says to wipe memories when switching to roll-up\n this.flushDisplayed(pts);\n this.nonDisplayed_ = createDisplayBuffer();\n this.displayed_ = createDisplayBuffer();\n }\n\n if (newBaseRow !== undefined && newBaseRow !== this.row_) {\n // move currently displayed captions (up or down) to the new base row\n for (var i = 0; i < this.rollUpRows_; i++) {\n this.displayed_[newBaseRow - i] = this.displayed_[this.row_ - i];\n this.displayed_[this.row_ - i] = '';\n }\n }\n\n if (newBaseRow === undefined) {\n newBaseRow = this.row_;\n }\n\n this.topRow_ = newBaseRow - this.rollUpRows_ + 1;\n};\n\n// Adds the opening HTML tag for the passed character to the caption text,\n// and keeps track of it for later closing\nCea608Stream.prototype.addFormatting = function(pts, format) {\n this.formatting_ = this.formatting_.concat(format);\n var text = format.reduce(function(text, format) {\n return text + '<' + format + '>';\n }, '');\n this[this.mode_](pts, text);\n};\n\n// Adds HTML closing tags for current formatting to caption text and\n// clears remembered formatting\nCea608Stream.prototype.clearFormatting = function(pts) {\n if (!this.formatting_.length) {\n return;\n }\n var text = this.formatting_.reverse().reduce(function(text, format) {\n return text + '';\n }, '');\n this.formatting_ = [];\n this[this.mode_](pts, text);\n};\n\n// Mode Implementations\nCea608Stream.prototype.popOn = function(pts, text) {\n var baseRow = this.nonDisplayed_[this.row_];\n\n // buffer characters\n baseRow += text;\n this.nonDisplayed_[this.row_] = baseRow;\n};\n\nCea608Stream.prototype.rollUp = function(pts, text) {\n var baseRow = this.displayed_[this.row_];\n\n baseRow += text;\n this.displayed_[this.row_] = baseRow;\n\n};\n\nCea608Stream.prototype.shiftRowsUp_ = function() {\n var i;\n // clear out inactive rows\n for (i = 0; i < this.topRow_; i++) {\n this.displayed_[i] = '';\n }\n for (i = this.row_ + 1; i < BOTTOM_ROW + 1; i++) {\n this.displayed_[i] = '';\n }\n // shift displayed rows up\n for (i = this.topRow_; i < this.row_; i++) {\n this.displayed_[i] = this.displayed_[i + 1];\n }\n // clear out the bottom row\n this.displayed_[this.row_] = '';\n};\n\nCea608Stream.prototype.paintOn = function(pts, text) {\n var baseRow = this.displayed_[this.row_];\n\n baseRow += text;\n this.displayed_[this.row_] = baseRow;\n};\n\n// exports\nmodule.exports = {\n CaptionStream: CaptionStream,\n Cea608Stream: Cea608Stream\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band CEA-708 captions out of FMP4 segments.\n * @see https://en.wikipedia.org/wiki/CEA-708\n */\n'use strict';\n\nvar discardEmulationPreventionBytes = require('../tools/caption-packet-parser').discardEmulationPreventionBytes;\nvar CaptionStream = require('../m2ts/caption-stream').CaptionStream;\nvar probe = require('./probe');\nvar inspect = require('../tools/mp4-inspector');\n\n/**\n * Maps an offset in the mdat to a sample based on the the size of the samples.\n * Assumes that `parseSamples` has been called first.\n *\n * @param {Number} offset - The offset into the mdat\n * @param {Object[]} samples - An array of samples, parsed using `parseSamples`\n * @return {?Object} The matching sample, or null if no match was found.\n *\n * @see ISO-BMFF-12/2015, Section 8.8.8\n **/\nvar mapToSample = function(offset, samples) {\n var approximateOffset = offset;\n\n for (var i = 0; i < samples.length; i++) {\n var sample = samples[i];\n\n if (approximateOffset < sample.size) {\n return sample;\n }\n\n approximateOffset -= sample.size;\n }\n\n return null;\n};\n\n/**\n * Finds SEI nal units contained in a Media Data Box.\n * Assumes that `parseSamples` has been called first.\n *\n * @param {Uint8Array} avcStream - The bytes of the mdat\n * @param {Object[]} samples - The samples parsed out by `parseSamples`\n * @param {Number} trackId - The trackId of this video track\n * @return {Object[]} seiNals - the parsed SEI NALUs found.\n * The contents of the seiNal should match what is expected by\n * CaptionStream.push (nalUnitType, size, data, escapedRBSP, pts, dts)\n *\n * @see ISO-BMFF-12/2015, Section 8.1.1\n * @see Rec. ITU-T H.264, 7.3.2.3.1\n **/\nvar findSeiNals = function(avcStream, samples, trackId) {\n var\n avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength),\n result = [],\n seiNal,\n i,\n length,\n lastMatchedSample;\n\n for (i = 0; i + 4 < avcStream.length; i += length) {\n length = avcView.getUint32(i);\n i += 4;\n\n // Bail if this doesn't appear to be an H264 stream\n if (length <= 0) {\n continue;\n }\n\n switch (avcStream[i] & 0x1F) {\n case 0x06:\n var data = avcStream.subarray(i + 1, i + 1 + length);\n var matchingSample = mapToSample(i, samples);\n\n seiNal = {\n nalUnitType: 'sei_rbsp',\n size: length,\n data: data,\n escapedRBSP: discardEmulationPreventionBytes(data),\n trackId: trackId\n };\n\n if (matchingSample) {\n seiNal.pts = matchingSample.pts;\n seiNal.dts = matchingSample.dts;\n lastMatchedSample = matchingSample;\n } else {\n // If a matching sample cannot be found, use the last\n // sample's values as they should be as close as possible\n seiNal.pts = lastMatchedSample.pts;\n seiNal.dts = lastMatchedSample.dts;\n }\n\n result.push(seiNal);\n break;\n default:\n break;\n }\n }\n\n return result;\n};\n\n/**\n * Parses sample information out of Track Run Boxes and calculates\n * the absolute presentation and decode timestamps of each sample.\n *\n * @param {Array} truns - The Trun Run boxes to be parsed\n * @param {Number} baseMediaDecodeTime - base media decode time from tfdt\n @see ISO-BMFF-12/2015, Section 8.8.12\n * @param {Object} tfhd - The parsed Track Fragment Header\n * @see inspect.parseTfhd\n * @return {Object[]} the parsed samples\n *\n * @see ISO-BMFF-12/2015, Section 8.8.8\n **/\nvar parseSamples = function(truns, baseMediaDecodeTime, tfhd) {\n var currentDts = baseMediaDecodeTime;\n var defaultSampleDuration = tfhd.defaultSampleDuration || 0;\n var defaultSampleSize = tfhd.defaultSampleSize || 0;\n var trackId = tfhd.trackId;\n var allSamples = [];\n\n truns.forEach(function(trun) {\n // Note: We currently do not parse the sample table as well\n // as the trun. It's possible some sources will require this.\n // moov > trak > mdia > minf > stbl\n var trackRun = inspect.parseTrun(trun);\n var samples = trackRun.samples;\n\n samples.forEach(function(sample) {\n if (sample.duration === undefined) {\n sample.duration = defaultSampleDuration;\n }\n if (sample.size === undefined) {\n sample.size = defaultSampleSize;\n }\n sample.trackId = trackId;\n sample.dts = currentDts;\n if (sample.compositionTimeOffset === undefined) {\n sample.compositionTimeOffset = 0;\n }\n sample.pts = currentDts + sample.compositionTimeOffset;\n\n currentDts += sample.duration;\n });\n\n allSamples = allSamples.concat(samples);\n });\n\n return allSamples;\n};\n\n/**\n * Parses out caption nals from an FMP4 segment's video tracks.\n *\n * @param {Uint8Array} segment - The bytes of a single segment\n * @param {Number} videoTrackId - The trackId of a video track in the segment\n * @return {Object.} A mapping of video trackId to\n * a list of seiNals found in that track\n **/\nvar parseCaptionNals = function(segment, videoTrackId) {\n // To get the samples\n var trafs = probe.findBox(segment, ['moof', 'traf']);\n // To get SEI NAL units\n var mdats = probe.findBox(segment, ['mdat']);\n var captionNals = {};\n var mdatTrafPairs = [];\n\n // Pair up each traf with a mdat as moofs and mdats are in pairs\n mdats.forEach(function(mdat, index) {\n var matchingTraf = trafs[index];\n mdatTrafPairs.push({\n mdat: mdat,\n traf: matchingTraf\n });\n });\n\n mdatTrafPairs.forEach(function(pair) {\n var mdat = pair.mdat;\n var traf = pair.traf;\n var tfhd = probe.findBox(traf, ['tfhd']);\n // Exactly 1 tfhd per traf\n var headerInfo = inspect.parseTfhd(tfhd[0]);\n var trackId = headerInfo.trackId;\n var tfdt = probe.findBox(traf, ['tfdt']);\n // Either 0 or 1 tfdt per traf\n var baseMediaDecodeTime = (tfdt.length > 0) ? inspect.parseTfdt(tfdt[0]).baseMediaDecodeTime : 0;\n var truns = probe.findBox(traf, ['trun']);\n var samples;\n var seiNals;\n\n // Only parse video data for the chosen video track\n if (videoTrackId === trackId && truns.length > 0) {\n samples = parseSamples(truns, baseMediaDecodeTime, headerInfo);\n\n seiNals = findSeiNals(mdat, samples, trackId);\n\n if (!captionNals[trackId]) {\n captionNals[trackId] = [];\n }\n\n captionNals[trackId] = captionNals[trackId].concat(seiNals);\n }\n });\n\n return captionNals;\n};\n\n/**\n * Parses out inband captions from an MP4 container and returns\n * caption objects that can be used by WebVTT and the TextTrack API.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/VTTCue\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TextTrack\n * Assumes that `probe.getVideoTrackIds` and `probe.timescale` have been called first\n *\n * @param {Uint8Array} segment - The fmp4 segment containing embedded captions\n * @param {Number} trackId - The id of the video track to parse\n * @param {Number} timescale - The timescale for the video track from the init segment\n *\n * @return {?Object[]} parsedCaptions - A list of captions or null if no video tracks\n * @return {Number} parsedCaptions[].startTime - The time to show the caption in seconds\n * @return {Number} parsedCaptions[].endTime - The time to stop showing the caption in seconds\n * @return {String} parsedCaptions[].text - The visible content of the caption\n **/\nvar parseEmbeddedCaptions = function(segment, trackId, timescale) {\n var seiNals;\n\n // the ISO-BMFF spec says that trackId can't be zero, but there's some broken content out there\n if (trackId === null) {\n return null;\n }\n\n seiNals = parseCaptionNals(segment, trackId);\n\n return {\n seiNals: seiNals[trackId],\n timescale: timescale\n };\n};\n\n/**\n * Converts SEI NALUs into captions that can be used by video.js\n **/\nvar CaptionParser = function() {\n var isInitialized = false;\n var captionStream;\n\n // Stores segments seen before trackId and timescale are set\n var segmentCache;\n // Stores video track ID of the track being parsed\n var trackId;\n // Stores the timescale of the track being parsed\n var timescale;\n // Stores captions parsed so far\n var parsedCaptions;\n // Stores whether we are receiving partial data or not\n var parsingPartial;\n\n /**\n * A method to indicate whether a CaptionParser has been initalized\n * @returns {Boolean}\n **/\n this.isInitialized = function() {\n return isInitialized;\n };\n\n /**\n * Initializes the underlying CaptionStream, SEI NAL parsing\n * and management, and caption collection\n **/\n this.init = function(options) {\n captionStream = new CaptionStream();\n isInitialized = true;\n parsingPartial = options ? options.isPartial : false;\n\n // Collect dispatched captions\n captionStream.on('data', function(event) {\n // Convert to seconds in the source's timescale\n event.startTime = event.startPts / timescale;\n event.endTime = event.endPts / timescale;\n\n parsedCaptions.captions.push(event);\n parsedCaptions.captionStreams[event.stream] = true;\n });\n };\n\n /**\n * Determines if a new video track will be selected\n * or if the timescale changed\n * @return {Boolean}\n **/\n this.isNewInit = function(videoTrackIds, timescales) {\n if ((videoTrackIds && videoTrackIds.length === 0) ||\n (timescales && typeof timescales === 'object' &&\n Object.keys(timescales).length === 0)) {\n return false;\n }\n\n return trackId !== videoTrackIds[0] ||\n timescale !== timescales[trackId];\n };\n\n /**\n * Parses out SEI captions and interacts with underlying\n * CaptionStream to return dispatched captions\n *\n * @param {Uint8Array} segment - The fmp4 segment containing embedded captions\n * @param {Number[]} videoTrackIds - A list of video tracks found in the init segment\n * @param {Object.} timescales - The timescales found in the init segment\n * @see parseEmbeddedCaptions\n * @see m2ts/caption-stream.js\n **/\n this.parse = function(segment, videoTrackIds, timescales) {\n var parsedData;\n\n if (!this.isInitialized()) {\n return null;\n\n // This is not likely to be a video segment\n } else if (!videoTrackIds || !timescales) {\n return null;\n\n } else if (this.isNewInit(videoTrackIds, timescales)) {\n // Use the first video track only as there is no\n // mechanism to switch to other video tracks\n trackId = videoTrackIds[0];\n timescale = timescales[trackId];\n\n // If an init segment has not been seen yet, hold onto segment\n // data until we have one.\n // the ISO-BMFF spec says that trackId can't be zero, but there's some broken content out there\n } else if (trackId === null || !timescale) {\n segmentCache.push(segment);\n return null;\n }\n\n // Now that a timescale and trackId is set, parse cached segments\n while (segmentCache.length > 0) {\n var cachedSegment = segmentCache.shift();\n\n this.parse(cachedSegment, videoTrackIds, timescales);\n }\n\n parsedData = parseEmbeddedCaptions(segment, trackId, timescale);\n\n if (parsedData === null || !parsedData.seiNals) {\n return null;\n }\n\n this.pushNals(parsedData.seiNals);\n // Force the parsed captions to be dispatched\n this.flushStream();\n\n return parsedCaptions;\n };\n\n /**\n * Pushes SEI NALUs onto CaptionStream\n * @param {Object[]} nals - A list of SEI nals parsed using `parseCaptionNals`\n * Assumes that `parseCaptionNals` has been called first\n * @see m2ts/caption-stream.js\n **/\n this.pushNals = function(nals) {\n if (!this.isInitialized() || !nals || nals.length === 0) {\n return null;\n }\n\n nals.forEach(function(nal) {\n captionStream.push(nal);\n });\n };\n\n /**\n * Flushes underlying CaptionStream to dispatch processed, displayable captions\n * @see m2ts/caption-stream.js\n **/\n this.flushStream = function() {\n if (!this.isInitialized()) {\n return null;\n }\n\n if (!parsingPartial) {\n captionStream.flush();\n } else {\n captionStream.partialFlush();\n }\n };\n\n /**\n * Reset caption buckets for new data\n **/\n this.clearParsedCaptions = function() {\n parsedCaptions.captions = [];\n parsedCaptions.captionStreams = {};\n };\n\n /**\n * Resets underlying CaptionStream\n * @see m2ts/caption-stream.js\n **/\n this.resetCaptionStream = function() {\n if (!this.isInitialized()) {\n return null;\n }\n\n captionStream.reset();\n };\n\n /**\n * Convenience method to clear all captions flushed from the\n * CaptionStream and still being parsed\n * @see m2ts/caption-stream.js\n **/\n this.clearAllCaptions = function() {\n this.clearParsedCaptions();\n this.resetCaptionStream();\n };\n\n /**\n * Reset caption parser\n **/\n this.reset = function() {\n segmentCache = [];\n trackId = null;\n timescale = null;\n\n if (!parsedCaptions) {\n parsedCaptions = {\n captions: [],\n // CC1, CC2, CC3, CC4\n captionStreams: {}\n };\n } else {\n this.clearParsedCaptions();\n }\n\n this.resetCaptionStream();\n };\n\n this.reset();\n};\n\nmodule.exports = CaptionParser;\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\n'use strict';\n\nmodule.exports = {\n H264_STREAM_TYPE: 0x1B,\n ADTS_STREAM_TYPE: 0x0F,\n METADATA_STREAM_TYPE: 0x15\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Accepts program elementary stream (PES) data events and corrects\n * decode and presentation time stamps to account for a rollover\n * of the 33 bit value.\n */\n\n'use strict';\n\nvar Stream = require('../utils/stream');\n\nvar MAX_TS = 8589934592;\n\nvar RO_THRESH = 4294967296;\n\nvar TYPE_SHARED = 'shared';\n\nvar handleRollover = function(value, reference) {\n var direction = 1;\n\n if (value > reference) {\n // If the current timestamp value is greater than our reference timestamp and we detect a\n // timestamp rollover, this means the roll over is happening in the opposite direction.\n // Example scenario: Enter a long stream/video just after a rollover occurred. The reference\n // point will be set to a small number, e.g. 1. The user then seeks backwards over the\n // rollover point. In loading this segment, the timestamp values will be very large,\n // e.g. 2^33 - 1. Since this comes before the data we loaded previously, we want to adjust\n // the time stamp to be `value - 2^33`.\n direction = -1;\n }\n\n // Note: A seek forwards or back that is greater than the RO_THRESH (2^32, ~13 hours) will\n // cause an incorrect adjustment.\n while (Math.abs(reference - value) > RO_THRESH) {\n value += (direction * MAX_TS);\n }\n\n return value;\n};\n\nvar TimestampRolloverStream = function(type) {\n var lastDTS, referenceDTS;\n\n TimestampRolloverStream.prototype.init.call(this);\n\n // The \"shared\" type is used in cases where a stream will contain muxed\n // video and audio. We could use `undefined` here, but having a string\n // makes debugging a little clearer.\n this.type_ = type || TYPE_SHARED;\n\n this.push = function(data) {\n\n // Any \"shared\" rollover streams will accept _all_ data. Otherwise,\n // streams will only accept data that matches their type.\n if (this.type_ !== TYPE_SHARED && data.type !== this.type_) {\n return;\n }\n\n if (referenceDTS === undefined) {\n referenceDTS = data.dts;\n }\n\n data.dts = handleRollover(data.dts, referenceDTS);\n data.pts = handleRollover(data.pts, referenceDTS);\n\n lastDTS = data.dts;\n\n this.trigger('data', data);\n };\n\n this.flush = function() {\n referenceDTS = lastDTS;\n this.trigger('done');\n };\n\n this.endTimeline = function() {\n this.flush();\n this.trigger('endedtimeline');\n };\n\n this.discontinuity = function() {\n referenceDTS = void 0;\n lastDTS = void 0;\n };\n\n this.reset = function() {\n this.discontinuity();\n this.trigger('reset');\n };\n};\n\nTimestampRolloverStream.prototype = new Stream();\n\nmodule.exports = {\n TimestampRolloverStream: TimestampRolloverStream,\n handleRollover: handleRollover\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about TS Segments.\n */\n'use strict';\n\nvar StreamTypes = require('./stream-types.js');\n\nvar parsePid = function(packet) {\n var pid = packet[1] & 0x1f;\n pid <<= 8;\n pid |= packet[2];\n return pid;\n};\n\nvar parsePayloadUnitStartIndicator = function(packet) {\n return !!(packet[1] & 0x40);\n};\n\nvar parseAdaptionField = function(packet) {\n var offset = 0;\n // if an adaption field is present, its length is specified by the\n // fifth byte of the TS packet header. The adaptation field is\n // used to add stuffing to PES packets that don't fill a complete\n // TS packet, and to specify some forms of timing and control data\n // that we do not currently use.\n if (((packet[3] & 0x30) >>> 4) > 0x01) {\n offset += packet[4] + 1;\n }\n return offset;\n};\n\nvar parseType = function(packet, pmtPid) {\n var pid = parsePid(packet);\n if (pid === 0) {\n return 'pat';\n } else if (pid === pmtPid) {\n return 'pmt';\n } else if (pmtPid) {\n return 'pes';\n }\n return null;\n};\n\nvar parsePat = function(packet) {\n var pusi = parsePayloadUnitStartIndicator(packet);\n var offset = 4 + parseAdaptionField(packet);\n\n if (pusi) {\n offset += packet[offset] + 1;\n }\n\n return (packet[offset + 10] & 0x1f) << 8 | packet[offset + 11];\n};\n\nvar parsePmt = function(packet) {\n var programMapTable = {};\n var pusi = parsePayloadUnitStartIndicator(packet);\n var payloadOffset = 4 + parseAdaptionField(packet);\n\n if (pusi) {\n payloadOffset += packet[payloadOffset] + 1;\n }\n\n // PMTs can be sent ahead of the time when they should actually\n // take effect. We don't believe this should ever be the case\n // for HLS but we'll ignore \"forward\" PMT declarations if we see\n // them. Future PMT declarations have the current_next_indicator\n // set to zero.\n if (!(packet[payloadOffset + 5] & 0x01)) {\n return;\n }\n\n var sectionLength, tableEnd, programInfoLength;\n // the mapping table ends at the end of the current section\n sectionLength = (packet[payloadOffset + 1] & 0x0f) << 8 | packet[payloadOffset + 2];\n tableEnd = 3 + sectionLength - 4;\n\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n programInfoLength = (packet[payloadOffset + 10] & 0x0f) << 8 | packet[payloadOffset + 11];\n\n // advance the offset to the first entry in the mapping table\n var offset = 12 + programInfoLength;\n while (offset < tableEnd) {\n var i = payloadOffset + offset;\n // add an entry that maps the elementary_pid to the stream_type\n programMapTable[(packet[i + 1] & 0x1F) << 8 | packet[i + 2]] = packet[i];\n\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += ((packet[i + 3] & 0x0F) << 8 | packet[i + 4]) + 5;\n }\n return programMapTable;\n};\n\nvar parsePesType = function(packet, programMapTable) {\n var pid = parsePid(packet);\n var type = programMapTable[pid];\n switch (type) {\n case StreamTypes.H264_STREAM_TYPE:\n return 'video';\n case StreamTypes.ADTS_STREAM_TYPE:\n return 'audio';\n case StreamTypes.METADATA_STREAM_TYPE:\n return 'timed-metadata';\n default:\n return null;\n }\n};\n\nvar parsePesTime = function(packet) {\n var pusi = parsePayloadUnitStartIndicator(packet);\n if (!pusi) {\n return null;\n }\n\n var offset = 4 + parseAdaptionField(packet);\n\n if (offset >= packet.byteLength) {\n // From the H 222.0 MPEG-TS spec\n // \"For transport stream packets carrying PES packets, stuffing is needed when there\n // is insufficient PES packet data to completely fill the transport stream packet\n // payload bytes. Stuffing is accomplished by defining an adaptation field longer than\n // the sum of the lengths of the data elements in it, so that the payload bytes\n // remaining after the adaptation field exactly accommodates the available PES packet\n // data.\"\n //\n // If the offset is >= the length of the packet, then the packet contains no data\n // and instead is just adaption field stuffing bytes\n return null;\n }\n\n var pes = null;\n var ptsDtsFlags;\n\n // PES packets may be annotated with a PTS value, or a PTS value\n // and a DTS value. Determine what combination of values is\n // available to work with.\n ptsDtsFlags = packet[offset + 7];\n\n // PTS and DTS are normally stored as a 33-bit number. Javascript\n // performs all bitwise operations on 32-bit integers but javascript\n // supports a much greater range (52-bits) of integer using standard\n // mathematical operations.\n // We construct a 31-bit value using bitwise operators over the 31\n // most significant bits and then multiply by 4 (equal to a left-shift\n // of 2) before we add the final 2 least significant bits of the\n // timestamp (equal to an OR.)\n if (ptsDtsFlags & 0xC0) {\n pes = {};\n // the PTS and DTS are not written out directly. For information\n // on how they are encoded, see\n // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n pes.pts = (packet[offset + 9] & 0x0E) << 27 |\n (packet[offset + 10] & 0xFF) << 20 |\n (packet[offset + 11] & 0xFE) << 12 |\n (packet[offset + 12] & 0xFF) << 5 |\n (packet[offset + 13] & 0xFE) >>> 3;\n pes.pts *= 4; // Left shift by 2\n pes.pts += (packet[offset + 13] & 0x06) >>> 1; // OR by the two LSBs\n pes.dts = pes.pts;\n if (ptsDtsFlags & 0x40) {\n pes.dts = (packet[offset + 14] & 0x0E) << 27 |\n (packet[offset + 15] & 0xFF) << 20 |\n (packet[offset + 16] & 0xFE) << 12 |\n (packet[offset + 17] & 0xFF) << 5 |\n (packet[offset + 18] & 0xFE) >>> 3;\n pes.dts *= 4; // Left shift by 2\n pes.dts += (packet[offset + 18] & 0x06) >>> 1; // OR by the two LSBs\n }\n }\n return pes;\n};\n\nvar parseNalUnitType = function(type) {\n switch (type) {\n case 0x05:\n return 'slice_layer_without_partitioning_rbsp_idr';\n case 0x06:\n return 'sei_rbsp';\n case 0x07:\n return 'seq_parameter_set_rbsp';\n case 0x08:\n return 'pic_parameter_set_rbsp';\n case 0x09:\n return 'access_unit_delimiter_rbsp';\n default:\n return null;\n }\n};\n\nvar videoPacketContainsKeyFrame = function(packet) {\n var offset = 4 + parseAdaptionField(packet);\n var frameBuffer = packet.subarray(offset);\n var frameI = 0;\n var frameSyncPoint = 0;\n var foundKeyFrame = false;\n var nalType;\n\n // advance the sync point to a NAL start, if necessary\n for (; frameSyncPoint < frameBuffer.byteLength - 3; frameSyncPoint++) {\n if (frameBuffer[frameSyncPoint + 2] === 1) {\n // the sync point is properly aligned\n frameI = frameSyncPoint + 5;\n break;\n }\n }\n\n while (frameI < frameBuffer.byteLength) {\n // look at the current byte to determine if we've hit the end of\n // a NAL unit boundary\n switch (frameBuffer[frameI]) {\n case 0:\n // skip past non-sync sequences\n if (frameBuffer[frameI - 1] !== 0) {\n frameI += 2;\n break;\n } else if (frameBuffer[frameI - 2] !== 0) {\n frameI++;\n break;\n }\n\n if (frameSyncPoint + 3 !== frameI - 2) {\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n }\n\n // drop trailing zeroes\n do {\n frameI++;\n } while (frameBuffer[frameI] !== 1 && frameI < frameBuffer.length);\n frameSyncPoint = frameI - 2;\n frameI += 3;\n break;\n case 1:\n // skip past non-sync sequences\n if (frameBuffer[frameI - 1] !== 0 ||\n frameBuffer[frameI - 2] !== 0) {\n frameI += 3;\n break;\n }\n\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n frameSyncPoint = frameI - 2;\n frameI += 3;\n break;\n default:\n // the current byte isn't a one or zero, so it cannot be part\n // of a sync sequence\n frameI += 3;\n break;\n }\n }\n frameBuffer = frameBuffer.subarray(frameSyncPoint);\n frameI -= frameSyncPoint;\n frameSyncPoint = 0;\n // parse the final nal\n if (frameBuffer && frameBuffer.byteLength > 3) {\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n }\n\n return foundKeyFrame;\n};\n\n\nmodule.exports = {\n parseType: parseType,\n parsePat: parsePat,\n parsePmt: parsePmt,\n parsePayloadUnitStartIndicator: parsePayloadUnitStartIndicator,\n parsePesType: parsePesType,\n parsePesTime: parsePesTime,\n videoPacketContainsKeyFrame: videoPacketContainsKeyFrame\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about Aac data.\n */\n'use strict';\n\nvar ADTS_SAMPLING_FREQUENCIES = [\n 96000,\n 88200,\n 64000,\n 48000,\n 44100,\n 32000,\n 24000,\n 22050,\n 16000,\n 12000,\n 11025,\n 8000,\n 7350\n];\n\nvar isLikelyAacData = function(data) {\n if ((data[0] === 'I'.charCodeAt(0)) &&\n (data[1] === 'D'.charCodeAt(0)) &&\n (data[2] === '3'.charCodeAt(0))) {\n return true;\n }\n return false;\n};\n\nvar parseSyncSafeInteger = function(data) {\n return (data[0] << 21) |\n (data[1] << 14) |\n (data[2] << 7) |\n (data[3]);\n};\n\n// return a percent-encoded representation of the specified byte range\n// @see http://en.wikipedia.org/wiki/Percent-encoding\nvar percentEncode = function(bytes, start, end) {\n var i, result = '';\n for (i = start; i < end; i++) {\n result += '%' + ('00' + bytes[i].toString(16)).slice(-2);\n }\n return result;\n};\n\n// return the string representation of the specified byte range,\n// interpreted as ISO-8859-1.\nvar parseIso88591 = function(bytes, start, end) {\n return unescape(percentEncode(bytes, start, end)); // jshint ignore:line\n};\n\nvar parseId3TagSize = function(header, byteIndex) {\n var\n returnSize = (header[byteIndex + 6] << 21) |\n (header[byteIndex + 7] << 14) |\n (header[byteIndex + 8] << 7) |\n (header[byteIndex + 9]),\n flags = header[byteIndex + 5],\n footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n return returnSize + 10;\n};\n\nvar parseAdtsSize = function(header, byteIndex) {\n var\n lowThree = (header[byteIndex + 5] & 0xE0) >> 5,\n middle = header[byteIndex + 4] << 3,\n highTwo = header[byteIndex + 3] & 0x3 << 11;\n\n return (highTwo | middle) | lowThree;\n};\n\nvar parseType = function(header, byteIndex) {\n if ((header[byteIndex] === 'I'.charCodeAt(0)) &&\n (header[byteIndex + 1] === 'D'.charCodeAt(0)) &&\n (header[byteIndex + 2] === '3'.charCodeAt(0))) {\n return 'timed-metadata';\n } else if ((header[byteIndex] & 0xff === 0xff) &&\n ((header[byteIndex + 1] & 0xf0) === 0xf0)) {\n return 'audio';\n }\n return null;\n};\n\nvar parseSampleRate = function(packet) {\n var i = 0;\n\n while (i + 5 < packet.length) {\n if (packet[i] !== 0xFF || (packet[i + 1] & 0xF6) !== 0xF0) {\n // If a valid header was not found, jump one forward and attempt to\n // find a valid ADTS header starting at the next byte\n i++;\n continue;\n }\n return ADTS_SAMPLING_FREQUENCIES[(packet[i + 2] & 0x3c) >>> 2];\n }\n\n return null;\n};\n\nvar parseAacTimestamp = function(packet) {\n var frameStart, frameSize, frame, frameHeader;\n\n // find the start of the first frame and the end of the tag\n frameStart = 10;\n if (packet[5] & 0x40) {\n // advance the frame start past the extended header\n frameStart += 4; // header size field\n frameStart += parseSyncSafeInteger(packet.subarray(10, 14));\n }\n\n // parse one or more ID3 frames\n // http://id3.org/id3v2.3.0#ID3v2_frame_overview\n do {\n // determine the number of bytes in this frame\n frameSize = parseSyncSafeInteger(packet.subarray(frameStart + 4, frameStart + 8));\n if (frameSize < 1) {\n return null;\n }\n frameHeader = String.fromCharCode(packet[frameStart],\n packet[frameStart + 1],\n packet[frameStart + 2],\n packet[frameStart + 3]);\n\n if (frameHeader === 'PRIV') {\n frame = packet.subarray(frameStart + 10, frameStart + frameSize + 10);\n\n for (var i = 0; i < frame.byteLength; i++) {\n if (frame[i] === 0) {\n var owner = parseIso88591(frame, 0, i);\n if (owner === 'com.apple.streaming.transportStreamTimestamp') {\n var d = frame.subarray(i + 1);\n var size = ((d[3] & 0x01) << 30) |\n (d[4] << 22) |\n (d[5] << 14) |\n (d[6] << 6) |\n (d[7] >>> 2);\n size *= 4;\n size += d[7] & 0x03;\n\n return size;\n }\n break;\n }\n }\n }\n\n frameStart += 10; // advance past the frame header\n frameStart += frameSize; // advance past the frame body\n } while (frameStart < packet.byteLength);\n return null;\n};\n\nmodule.exports = {\n isLikelyAacData: isLikelyAacData,\n parseId3TagSize: parseId3TagSize,\n parseAdtsSize: parseAdtsSize,\n parseType: parseType,\n parseSampleRate: parseSampleRate,\n parseAacTimestamp: parseAacTimestamp\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Parse mpeg2 transport stream packets to extract basic timing information\n */\n'use strict';\n\nvar StreamTypes = require('../m2ts/stream-types.js');\nvar handleRollover = require('../m2ts/timestamp-rollover-stream.js').handleRollover;\nvar probe = {};\nprobe.ts = require('../m2ts/probe.js');\nprobe.aac = require('../aac/utils.js');\nvar ONE_SECOND_IN_TS = require('../utils/clock').ONE_SECOND_IN_TS;\n\nvar\n MP2T_PACKET_LENGTH = 188, // bytes\n SYNC_BYTE = 0x47;\n\n/**\n * walks through segment data looking for pat and pmt packets to parse out\n * program map table information\n */\nvar parsePsi_ = function(bytes, pmt) {\n var\n startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH,\n packet, type;\n\n while (endIndex < bytes.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n\n switch (type) {\n case 'pat':\n if (!pmt.pid) {\n pmt.pid = probe.ts.parsePat(packet);\n }\n break;\n case 'pmt':\n if (!pmt.table) {\n pmt.table = probe.ts.parsePmt(packet);\n }\n break;\n default:\n break;\n }\n\n // Found the pat and pmt, we can stop walking the segment\n if (pmt.pid && pmt.table) {\n return;\n }\n\n startIndex += MP2T_PACKET_LENGTH;\n endIndex += MP2T_PACKET_LENGTH;\n continue;\n }\n\n // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n startIndex++;\n endIndex++;\n }\n};\n\n/**\n * walks through the segment data from the start and end to get timing information\n * for the first and last audio pes packets\n */\nvar parseAudioPes_ = function(bytes, pmt, result) {\n var\n startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH,\n packet, type, pesType, pusi, parsed;\n\n var endLoop = false;\n\n // Start walking from start of segment to get first audio packet\n while (endIndex <= bytes.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE &&\n (bytes[endIndex] === SYNC_BYTE || endIndex === bytes.byteLength)) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'audio' && pusi) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'audio';\n result.audio.push(parsed);\n endLoop = true;\n }\n }\n break;\n default:\n break;\n }\n\n if (endLoop) {\n break;\n }\n\n startIndex += MP2T_PACKET_LENGTH;\n endIndex += MP2T_PACKET_LENGTH;\n continue;\n }\n\n // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n startIndex++;\n endIndex++;\n }\n\n // Start walking from end of segment to get last audio packet\n endIndex = bytes.byteLength;\n startIndex = endIndex - MP2T_PACKET_LENGTH;\n endLoop = false;\n while (startIndex >= 0) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE &&\n (bytes[endIndex] === SYNC_BYTE || endIndex === bytes.byteLength)) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'audio' && pusi) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'audio';\n result.audio.push(parsed);\n endLoop = true;\n }\n }\n break;\n default:\n break;\n }\n\n if (endLoop) {\n break;\n }\n\n startIndex -= MP2T_PACKET_LENGTH;\n endIndex -= MP2T_PACKET_LENGTH;\n continue;\n }\n\n // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n startIndex--;\n endIndex--;\n }\n};\n\n/**\n * walks through the segment data from the start and end to get timing information\n * for the first and last video pes packets as well as timing information for the first\n * key frame.\n */\nvar parseVideoPes_ = function(bytes, pmt, result) {\n var\n startIndex = 0,\n endIndex = MP2T_PACKET_LENGTH,\n packet, type, pesType, pusi, parsed, frame, i, pes;\n\n var endLoop = false;\n\n var currentFrame = {\n data: [],\n size: 0\n };\n\n // Start walking from start of segment to get first video packet\n while (endIndex < bytes.byteLength) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'video') {\n if (pusi && !endLoop) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'video';\n result.video.push(parsed);\n endLoop = true;\n }\n }\n if (!result.firstKeyFrame) {\n if (pusi) {\n if (currentFrame.size !== 0) {\n frame = new Uint8Array(currentFrame.size);\n i = 0;\n while (currentFrame.data.length) {\n pes = currentFrame.data.shift();\n frame.set(pes, i);\n i += pes.byteLength;\n }\n if (probe.ts.videoPacketContainsKeyFrame(frame)) {\n var firstKeyFrame = probe.ts.parsePesTime(frame);\n\n // PTS/DTS may not be available. Simply *not* setting\n // the keyframe seems to work fine with HLS playback\n // and definitely preferable to a crash with TypeError...\n if (firstKeyFrame) {\n result.firstKeyFrame = firstKeyFrame;\n result.firstKeyFrame.type = 'video';\n } else {\n // eslint-disable-next-line\n console.warn(\n 'Failed to extract PTS/DTS from PES at first keyframe. ' +\n 'This could be an unusual TS segment, or else mux.js did not ' +\n 'parse your TS segment correctly. If you know your TS ' +\n 'segments do contain PTS/DTS on keyframes please file a bug ' +\n 'report! You can try ffprobe to double check for yourself.'\n );\n }\n }\n currentFrame.size = 0;\n }\n }\n currentFrame.data.push(packet);\n currentFrame.size += packet.byteLength;\n }\n }\n break;\n default:\n break;\n }\n\n if (endLoop && result.firstKeyFrame) {\n break;\n }\n\n startIndex += MP2T_PACKET_LENGTH;\n endIndex += MP2T_PACKET_LENGTH;\n continue;\n }\n\n // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n startIndex++;\n endIndex++;\n }\n\n // Start walking from end of segment to get last video packet\n endIndex = bytes.byteLength;\n startIndex = endIndex - MP2T_PACKET_LENGTH;\n endLoop = false;\n while (startIndex >= 0) {\n // Look for a pair of start and end sync bytes in the data..\n if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) {\n // We found a packet\n packet = bytes.subarray(startIndex, endIndex);\n type = probe.ts.parseType(packet, pmt.pid);\n\n switch (type) {\n case 'pes':\n pesType = probe.ts.parsePesType(packet, pmt.table);\n pusi = probe.ts.parsePayloadUnitStartIndicator(packet);\n if (pesType === 'video' && pusi) {\n parsed = probe.ts.parsePesTime(packet);\n if (parsed) {\n parsed.type = 'video';\n result.video.push(parsed);\n endLoop = true;\n }\n }\n break;\n default:\n break;\n }\n\n if (endLoop) {\n break;\n }\n\n startIndex -= MP2T_PACKET_LENGTH;\n endIndex -= MP2T_PACKET_LENGTH;\n continue;\n }\n\n // If we get here, we have somehow become de-synchronized and we need to step\n // forward one byte at a time until we find a pair of sync bytes that denote\n // a packet\n startIndex--;\n endIndex--;\n }\n};\n\n/**\n * Adjusts the timestamp information for the segment to account for\n * rollover and convert to seconds based on pes packet timescale (90khz clock)\n */\nvar adjustTimestamp_ = function(segmentInfo, baseTimestamp) {\n if (segmentInfo.audio && segmentInfo.audio.length) {\n var audioBaseTimestamp = baseTimestamp;\n if (typeof audioBaseTimestamp === 'undefined') {\n audioBaseTimestamp = segmentInfo.audio[0].dts;\n }\n segmentInfo.audio.forEach(function(info) {\n info.dts = handleRollover(info.dts, audioBaseTimestamp);\n info.pts = handleRollover(info.pts, audioBaseTimestamp);\n // time in seconds\n info.dtsTime = info.dts / ONE_SECOND_IN_TS;\n info.ptsTime = info.pts / ONE_SECOND_IN_TS;\n });\n }\n\n if (segmentInfo.video && segmentInfo.video.length) {\n var videoBaseTimestamp = baseTimestamp;\n if (typeof videoBaseTimestamp === 'undefined') {\n videoBaseTimestamp = segmentInfo.video[0].dts;\n }\n segmentInfo.video.forEach(function(info) {\n info.dts = handleRollover(info.dts, videoBaseTimestamp);\n info.pts = handleRollover(info.pts, videoBaseTimestamp);\n // time in seconds\n info.dtsTime = info.dts / ONE_SECOND_IN_TS;\n info.ptsTime = info.pts / ONE_SECOND_IN_TS;\n });\n if (segmentInfo.firstKeyFrame) {\n var frame = segmentInfo.firstKeyFrame;\n frame.dts = handleRollover(frame.dts, videoBaseTimestamp);\n frame.pts = handleRollover(frame.pts, videoBaseTimestamp);\n // time in seconds\n frame.dtsTime = frame.dts / ONE_SECOND_IN_TS;\n frame.ptsTime = frame.dts / ONE_SECOND_IN_TS;\n }\n }\n};\n\n/**\n * inspects the aac data stream for start and end time information\n */\nvar inspectAac_ = function(bytes) {\n var\n endLoop = false,\n audioCount = 0,\n sampleRate = null,\n timestamp = null,\n frameSize = 0,\n byteIndex = 0,\n packet;\n\n while (bytes.length - byteIndex >= 3) {\n var type = probe.aac.parseType(bytes, byteIndex);\n switch (type) {\n case 'timed-metadata':\n // Exit early because we don't have enough to parse\n // the ID3 tag header\n if (bytes.length - byteIndex < 10) {\n endLoop = true;\n break;\n }\n\n frameSize = probe.aac.parseId3TagSize(bytes, byteIndex);\n\n // Exit early if we don't have enough in the buffer\n // to emit a full packet\n if (frameSize > bytes.length) {\n endLoop = true;\n break;\n }\n if (timestamp === null) {\n packet = bytes.subarray(byteIndex, byteIndex + frameSize);\n timestamp = probe.aac.parseAacTimestamp(packet);\n }\n byteIndex += frameSize;\n break;\n case 'audio':\n // Exit early because we don't have enough to parse\n // the ADTS frame header\n if (bytes.length - byteIndex < 7) {\n endLoop = true;\n break;\n }\n\n frameSize = probe.aac.parseAdtsSize(bytes, byteIndex);\n\n // Exit early if we don't have enough in the buffer\n // to emit a full packet\n if (frameSize > bytes.length) {\n endLoop = true;\n break;\n }\n if (sampleRate === null) {\n packet = bytes.subarray(byteIndex, byteIndex + frameSize);\n sampleRate = probe.aac.parseSampleRate(packet);\n }\n audioCount++;\n byteIndex += frameSize;\n break;\n default:\n byteIndex++;\n break;\n }\n if (endLoop) {\n return null;\n }\n }\n if (sampleRate === null || timestamp === null) {\n return null;\n }\n\n var audioTimescale = ONE_SECOND_IN_TS / sampleRate;\n\n var result = {\n audio: [\n {\n type: 'audio',\n dts: timestamp,\n pts: timestamp\n },\n {\n type: 'audio',\n dts: timestamp + (audioCount * 1024 * audioTimescale),\n pts: timestamp + (audioCount * 1024 * audioTimescale)\n }\n ]\n };\n\n return result;\n};\n\n/**\n * inspects the transport stream segment data for start and end time information\n * of the audio and video tracks (when present) as well as the first key frame's\n * start time.\n */\nvar inspectTs_ = function(bytes) {\n var pmt = {\n pid: null,\n table: null\n };\n\n var result = {};\n\n parsePsi_(bytes, pmt);\n\n for (var pid in pmt.table) {\n if (pmt.table.hasOwnProperty(pid)) {\n var type = pmt.table[pid];\n switch (type) {\n case StreamTypes.H264_STREAM_TYPE:\n result.video = [];\n parseVideoPes_(bytes, pmt, result);\n if (result.video.length === 0) {\n delete result.video;\n }\n break;\n case StreamTypes.ADTS_STREAM_TYPE:\n result.audio = [];\n parseAudioPes_(bytes, pmt, result);\n if (result.audio.length === 0) {\n delete result.audio;\n }\n break;\n default:\n break;\n }\n }\n }\n return result;\n};\n\n/**\n * Inspects segment byte data and returns an object with start and end timing information\n *\n * @param {Uint8Array} bytes The segment byte data\n * @param {Number} baseTimestamp Relative reference timestamp used when adjusting frame\n * timestamps for rollover. This value must be in 90khz clock.\n * @return {Object} Object containing start and end frame timing info of segment.\n */\nvar inspect = function(bytes, baseTimestamp) {\n var isAacData = probe.aac.isLikelyAacData(bytes);\n\n var result;\n\n if (isAacData) {\n result = inspectAac_(bytes);\n } else {\n result = inspectTs_(bytes);\n }\n\n if (!result || (!result.audio && !result.video)) {\n return null;\n }\n\n adjustTimestamp_(result, baseTimestamp);\n\n return result;\n};\n\nmodule.exports = {\n inspect: inspect,\n parseAudioPes_: parseAudioPes_\n};\n","import { unpad } from 'pkcs7';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * @file aes.js\n *\n * This file contains an adaptation of the AES decryption algorithm\n * from the Standford Javascript Cryptography Library. That work is\n * covered by the following copyright and permissions notice:\n *\n * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the authors.\n */\n\n/**\n * Expand the S-box tables.\n *\n * @private\n */\nvar precompute = function precompute() {\n var tables = [[[], [], [], [], []], [[], [], [], [], []]];\n var encTable = tables[0];\n var decTable = tables[1];\n var sbox = encTable[4];\n var sboxInv = decTable[4];\n var i = void 0;\n var x = void 0;\n var xInv = void 0;\n var d = [];\n var th = [];\n var x2 = void 0;\n var x4 = void 0;\n var x8 = void 0;\n var s = void 0;\n var tEnc = void 0;\n var tDec = void 0;\n\n // Compute double and third tables\n for (i = 0; i < 256; i++) {\n th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i;\n }\n\n for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n sbox[x] = s;\n sboxInv[s] = x;\n\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n\n for (i = 0; i < 4; i++) {\n encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8;\n }\n }\n\n // Compactify. Considerable speedup on Firefox.\n for (i = 0; i < 5; i++) {\n encTable[i] = encTable[i].slice(0);\n decTable[i] = decTable[i].slice(0);\n }\n return tables;\n};\nvar aesTables = null;\n\n/**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @class AES\n * @param key {Array} The key as an array of 4, 6 or 8 words.\n */\n\nvar AES = function () {\n function AES(key) {\n classCallCheck(this, AES);\n\n /**\n * The expanded S-box and inverse S-box tables. These will be computed\n * on the client so that we don't have to send them down the wire.\n *\n * There are two tables, _tables[0] is for encryption and\n * _tables[1] is for decryption.\n *\n * The first 4 sub-tables are the expanded S-box with MixColumns. The\n * last (_tables[01][4]) is the S-box itself.\n *\n * @private\n */\n // if we have yet to precompute the S-box tables\n // do so now\n if (!aesTables) {\n aesTables = precompute();\n }\n // then make a copy of that object for use\n this._tables = [[aesTables[0][0].slice(), aesTables[0][1].slice(), aesTables[0][2].slice(), aesTables[0][3].slice(), aesTables[0][4].slice()], [aesTables[1][0].slice(), aesTables[1][1].slice(), aesTables[1][2].slice(), aesTables[1][3].slice(), aesTables[1][4].slice()]];\n var i = void 0;\n var j = void 0;\n var tmp = void 0;\n var encKey = void 0;\n var decKey = void 0;\n var sbox = this._tables[0][4];\n var decTable = this._tables[1];\n var keyLen = key.length;\n var rcon = 1;\n\n if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n throw new Error('Invalid aes key size');\n }\n\n encKey = key.slice(0);\n decKey = [];\n this._key = [encKey, decKey];\n\n // schedule encryption keys\n for (i = keyLen; i < 4 * keyLen + 28; i++) {\n tmp = encKey[i - 1];\n\n // apply sbox\n if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) {\n tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255];\n\n // shift rows and add rcon\n if (i % keyLen === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24;\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n\n encKey[i] = encKey[i - keyLen] ^ tmp;\n }\n\n // schedule decryption keys\n for (j = 0; i; j++, i--) {\n tmp = encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n decKey[j] = tmp;\n } else {\n decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]];\n }\n }\n }\n\n /**\n * Decrypt 16 bytes, specified as four 32-bit words.\n *\n * @param {Number} encrypted0 the first word to decrypt\n * @param {Number} encrypted1 the second word to decrypt\n * @param {Number} encrypted2 the third word to decrypt\n * @param {Number} encrypted3 the fourth word to decrypt\n * @param {Int32Array} out the array to write the decrypted words\n * into\n * @param {Number} offset the offset into the output array to start\n * writing results\n * @return {Array} The plaintext.\n */\n\n\n AES.prototype.decrypt = function decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) {\n var key = this._key[1];\n // state variables a,b,c,d are loaded with pre-whitened data\n var a = encrypted0 ^ key[0];\n var b = encrypted3 ^ key[1];\n var c = encrypted2 ^ key[2];\n var d = encrypted1 ^ key[3];\n var a2 = void 0;\n var b2 = void 0;\n var c2 = void 0;\n\n // key.length === 2 ?\n var nInnerRounds = key.length / 4 - 2;\n var i = void 0;\n var kIndex = 4;\n var table = this._tables[1];\n\n // load up the tables\n var table0 = table[0];\n var table1 = table[1];\n var table2 = table[2];\n var table3 = table[3];\n var sbox = table[4];\n\n // Inner rounds. Cribbed from OpenSSL.\n for (i = 0; i < nInnerRounds; i++) {\n a2 = table0[a >>> 24] ^ table1[b >> 16 & 255] ^ table2[c >> 8 & 255] ^ table3[d & 255] ^ key[kIndex];\n b2 = table0[b >>> 24] ^ table1[c >> 16 & 255] ^ table2[d >> 8 & 255] ^ table3[a & 255] ^ key[kIndex + 1];\n c2 = table0[c >>> 24] ^ table1[d >> 16 & 255] ^ table2[a >> 8 & 255] ^ table3[b & 255] ^ key[kIndex + 2];\n d = table0[d >>> 24] ^ table1[a >> 16 & 255] ^ table2[b >> 8 & 255] ^ table3[c & 255] ^ key[kIndex + 3];\n kIndex += 4;\n a = a2;b = b2;c = c2;\n }\n\n // Last round.\n for (i = 0; i < 4; i++) {\n out[(3 & -i) + offset] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++];\n a2 = a;a = b;b = c;c = d;d = a2;\n }\n };\n\n return AES;\n}();\n\n/**\n * @file stream.js\n */\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = function () {\n function Stream() {\n classCallCheck(this, Stream);\n\n this.listeners = {};\n }\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 Stream.prototype.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n this.listeners[type].push(listener);\n };\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 Stream.prototype.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener);\n\n this.listeners[type].splice(index, 1);\n return index > -1;\n };\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 Stream.prototype.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n }\n\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 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 /**\n * Destroys the stream and cleans up.\n */\n\n\n Stream.prototype.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 Stream.prototype.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\n/**\n * @file async-stream.js\n */\n/**\n * A wrapper around the Stream class to use setTiemout\n * and run stream \"jobs\" Asynchronously\n *\n * @class AsyncStream\n * @extends Stream\n */\n\nvar AsyncStream = function (_Stream) {\n inherits(AsyncStream, _Stream);\n\n function AsyncStream() {\n classCallCheck(this, AsyncStream);\n\n var _this = possibleConstructorReturn(this, _Stream.call(this, Stream));\n\n _this.jobs = [];\n _this.delay = 1;\n _this.timeout_ = null;\n return _this;\n }\n\n /**\n * process an async job\n *\n * @private\n */\n\n\n AsyncStream.prototype.processJob_ = function processJob_() {\n this.jobs.shift()();\n if (this.jobs.length) {\n this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay);\n } else {\n this.timeout_ = null;\n }\n };\n\n /**\n * push a job into the stream\n *\n * @param {Function} job the job to push into the stream\n */\n\n\n AsyncStream.prototype.push = function push(job) {\n this.jobs.push(job);\n if (!this.timeout_) {\n this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay);\n }\n };\n\n return AsyncStream;\n}(Stream);\n\n/**\n * @file decrypter.js\n *\n * An asynchronous implementation of AES-128 CBC decryption with\n * PKCS#7 padding.\n */\n\n/**\n * Convert network-order (big-endian) bytes into their little-endian\n * representation.\n */\nvar ntoh = function ntoh(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n};\n\n/**\n * Decrypt bytes using AES-128 with CBC and PKCS#7 padding.\n *\n * @param {Uint8Array} encrypted the encrypted bytes\n * @param {Uint32Array} key the bytes of the decryption key\n * @param {Uint32Array} initVector the initialization vector (IV) to\n * use for the first round of CBC.\n * @return {Uint8Array} the decrypted bytes\n *\n * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard\n * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29\n * @see https://tools.ietf.org/html/rfc2315\n */\nvar decrypt = function decrypt(encrypted, key, initVector) {\n // word-level access to the encrypted bytes\n var encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2);\n\n var decipher = new AES(Array.prototype.slice.call(key));\n\n // byte and word-level access for the decrypted output\n var decrypted = new Uint8Array(encrypted.byteLength);\n var decrypted32 = new Int32Array(decrypted.buffer);\n\n // temporary variables for working with the IV, encrypted, and\n // decrypted data\n var init0 = void 0;\n var init1 = void 0;\n var init2 = void 0;\n var init3 = void 0;\n var encrypted0 = void 0;\n var encrypted1 = void 0;\n var encrypted2 = void 0;\n var encrypted3 = void 0;\n\n // iteration variable\n var wordIx = void 0;\n\n // pull out the words of the IV to ensure we don't modify the\n // passed-in reference and easier access\n init0 = initVector[0];\n init1 = initVector[1];\n init2 = initVector[2];\n init3 = initVector[3];\n\n // decrypt four word sequences, applying cipher-block chaining (CBC)\n // to each decrypted block\n for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) {\n // convert big-endian (network order) words into little-endian\n // (javascript order)\n encrypted0 = ntoh(encrypted32[wordIx]);\n encrypted1 = ntoh(encrypted32[wordIx + 1]);\n encrypted2 = ntoh(encrypted32[wordIx + 2]);\n encrypted3 = ntoh(encrypted32[wordIx + 3]);\n\n // decrypt the block\n decipher.decrypt(encrypted0, encrypted1, encrypted2, encrypted3, decrypted32, wordIx);\n\n // XOR with the IV, and restore network byte-order to obtain the\n // plaintext\n decrypted32[wordIx] = ntoh(decrypted32[wordIx] ^ init0);\n decrypted32[wordIx + 1] = ntoh(decrypted32[wordIx + 1] ^ init1);\n decrypted32[wordIx + 2] = ntoh(decrypted32[wordIx + 2] ^ init2);\n decrypted32[wordIx + 3] = ntoh(decrypted32[wordIx + 3] ^ init3);\n\n // setup the IV for the next round\n init0 = encrypted0;\n init1 = encrypted1;\n init2 = encrypted2;\n init3 = encrypted3;\n }\n\n return decrypted;\n};\n\n/**\n * The `Decrypter` class that manages decryption of AES\n * data through `AsyncStream` objects and the `decrypt`\n * function\n *\n * @param {Uint8Array} encrypted the encrypted bytes\n * @param {Uint32Array} key the bytes of the decryption key\n * @param {Uint32Array} initVector the initialization vector (IV) to\n * @param {Function} done the function to run when done\n * @class Decrypter\n */\n\nvar Decrypter = function () {\n function Decrypter(encrypted, key, initVector, done) {\n classCallCheck(this, Decrypter);\n\n var step = Decrypter.STEP;\n var encrypted32 = new Int32Array(encrypted.buffer);\n var decrypted = new Uint8Array(encrypted.byteLength);\n var i = 0;\n\n this.asyncStream_ = new AsyncStream();\n\n // split up the encryption job and do the individual chunks asynchronously\n this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted));\n for (i = step; i < encrypted32.length; i += step) {\n initVector = new Uint32Array([ntoh(encrypted32[i - 4]), ntoh(encrypted32[i - 3]), ntoh(encrypted32[i - 2]), ntoh(encrypted32[i - 1])]);\n this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted));\n }\n // invoke the done() callback when everything is finished\n this.asyncStream_.push(function () {\n // remove pkcs#7 padding from the decrypted bytes\n done(null, unpad(decrypted));\n });\n }\n\n /**\n * a getter for step the maximum number of bytes to process at one time\n *\n * @return {Number} the value of step 32000\n */\n\n\n /**\n * @private\n */\n Decrypter.prototype.decryptChunk_ = function decryptChunk_(encrypted, key, initVector, decrypted) {\n return function () {\n var bytes = decrypt(encrypted, key, initVector);\n\n decrypted.set(bytes, encrypted.byteOffset);\n };\n };\n\n createClass(Decrypter, null, [{\n key: 'STEP',\n get: function get$$1() {\n // 4 * 8000;\n return 32000;\n }\n }]);\n return Decrypter;\n}();\n\n/**\n * @file index.js\n *\n * Index module to easily import the primary components of AES-128\n * decryption. Like this:\n *\n * ```js\n * import {Decrypter, decrypt, AsyncStream} from 'aes-decrypter';\n * ```\n */\n\nexport { decrypt, Decrypter, AsyncStream };\n","/*\n * pkcs7.pad\n * https://github.com/brightcove/pkcs7\n *\n * Copyright (c) 2014 Brightcove\n * Licensed under the apache2 license.\n */\n\nvar PADDING = void 0;\n\n/**\n * Returns a new Uint8Array that is padded with PKCS#7 padding.\n * @param plaintext {Uint8Array} the input bytes before encryption\n * @return {Uint8Array} the padded bytes\n * @see http://tools.ietf.org/html/rfc5652\n */\nfunction pad(plaintext) {\n var padding = PADDING[plaintext.byteLength % 16 || 0];\n var result = new Uint8Array(plaintext.byteLength + padding.length);\n\n result.set(plaintext);\n result.set(padding, plaintext.byteLength);\n\n return result;\n}\n\n// pre-define the padding values\nPADDING = [[16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15], [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14], [13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13], [12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12], [11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11], [10, 10, 10, 10, 10, 10, 10, 10, 10, 10], [9, 9, 9, 9, 9, 9, 9, 9, 9], [8, 8, 8, 8, 8, 8, 8, 8], [7, 7, 7, 7, 7, 7, 7], [6, 6, 6, 6, 6, 6], [5, 5, 5, 5, 5], [4, 4, 4, 4], [3, 3, 3], [2, 2], [1]];\n\n/**\n * Returns the subarray of a Uint8Array without PKCS#7 padding.\n * @param padded {Uint8Array} unencrypted bytes that have been padded\n * @return {Uint8Array} the unpadded bytes\n * @see http://tools.ietf.org/html/rfc5652\n */\nfunction unpad(padded) {\n return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]);\n}\n\nvar version = \"1.0.2\";\n\nexport { pad, unpad, version as VERSION };\n","/**\n * @license\n * Video.js 7.6.5 \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$1 from 'global/window';\nimport document from 'global/document';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport keycode from 'keycode';\nimport XHR from 'xhr';\nimport vtt from 'videojs-vtt.js';\nimport URLToolkit from 'url-toolkit';\nimport { Parser } from 'm3u8-parser';\nimport { parse, parseUTCTiming } from 'mpd-parser';\nimport mp4Inspector from 'mux.js/lib/tools/mp4-inspector';\nimport mp4probe from 'mux.js/lib/mp4/probe';\nimport CaptionParser from 'mux.js/lib/mp4/caption-parser';\nimport tsInspector from 'mux.js/lib/tools/ts-inspector.js';\nimport { Decrypter, AsyncStream, decrypt } from 'aes-decrypter';\n\nvar version = \"7.6.5\";\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));\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$1.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$1.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$1.console.info || window$1.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$1.console, args);\n };\n};\n\nfunction createLogger(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(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 = createLogger('VIDEOJS');\nvar createLogger$1 = log.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 Object.assign.apply(Object, [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$1.getComputedStyle === 'function') {\n var computedStyleValue = window$1.getComputedStyle(el);\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\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 return typeof str === 'string' && /\\S/.test(str);\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 if (/\\s/.test(str)) {\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$1.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$1.parent !== window$1.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.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 {\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 var box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var docEl = document.documentElement;\n var body = document.body;\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = window$1.pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = window$1.pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop; // Android sometimes returns slightly off decimal values, so need to round\n\n return {\n left: Math.round(left),\n top: Math.round(top)\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 position = {};\n var box = findPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n var boxY = box.top;\n var boxX = box.left;\n var pageY = event.pageY;\n var pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / 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 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;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n // Protect against breakage in non-browser environments and check global autoSetup option.\n if (!isReal() || videojs.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(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 if (vjs) {\n videojs = vjs;\n }\n\n window$1.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$1.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$1.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 dom-data.js\n * @module dom-data\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 */\nvar DomData = new WeakMap();\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 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 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$1.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 } // Returns fixed-up instance\n\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive = false;\n\n(function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\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.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 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$1.performance.now();\n\n var throttled = function throttled() {\n var now = window$1.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$1;\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 = 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.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.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.prototype.addEventListener = EventTarget.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.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.prototype.removeEventListener = EventTarget.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.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.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.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.prototype.dispatchEvent = EventTarget.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget.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$1.clearTimeout(oldTimeout);\n var timeout = window$1.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/**\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\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget || !!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\n\nvar validateTarget = function validateTarget(target) {\n if (!target.nodeName && !isEvented(target)) {\n throw new Error('Invalid target; 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\n\nvar validateEventType = function validateEventType(type) {\n if (!isValidEventType(type)) {\n throw new Error('Invalid event type; 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\n\nvar validateListener = function validateListener(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Invalid listener; 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 * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args) {\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);\n validateEventType(type);\n validateListener(listener);\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);\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),\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),\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),\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);\n validateEventType(type);\n validateListener(listener); // 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 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$1.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 = 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(str1) === toTitleCase(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() {\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(result[key], value);\n });\n });\n return result;\n}\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 =\n/*#__PURE__*/\nfunction () {\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 } // Hold the reference to the parent component via `addChild` method\n\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions(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 }\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.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready); // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\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 /**\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 close event does not\n * bubble up\n */\n this.trigger({\n type: 'dispose',\n bubbles: false\n }); // 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 * 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(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 * 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 * 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(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(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 var childNodes = this.contentEl().children;\n var refNode = childNodes[index] || null;\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(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(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(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(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$1.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$1.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$1.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$1.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$1.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$1.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$1.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 * 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$1.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 _this4 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n _this4[idName].forEach(_this4[cancelName], _this4);\n });\n _this4.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(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.prototype.supportsRaf_ = typeof window$1.requestAnimationFrame === 'function' && typeof window$1.cancelAnimationFrame === 'function';\nComponent.registerComponent('Component', Component);\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window$1.navigator && window$1.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 iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/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 device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\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 * 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 = /Edge/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 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/**\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 = isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch);\n\nvar browser = /*#__PURE__*/Object.freeze({\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IPOD: IS_IPOD,\n IS_IOS: IS_IOS,\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_ANY_SAFARI: IS_ANY_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED\n});\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 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 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 =\n/*#__PURE__*/\nfunction (_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 _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$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component);\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.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 =\n/*#__PURE__*/\nfunction (_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 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 /**\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);\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}; // 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 = 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 =\n/*#__PURE__*/\nfunction (_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(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(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(_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$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 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 =\n/*#__PURE__*/\nfunction (_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$1(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$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.selectedChange_ = function () {\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 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 =\n/*#__PURE__*/\nfunction (_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 =\n/*#__PURE__*/\nfunction () {\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 =\n/*#__PURE__*/\nfunction () {\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 =\n/*#__PURE__*/\nfunction (_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 label: options.label || '',\n language: options.language || ''\n };\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} label\n * The label of this track. 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 return _this;\n }\n\n return Track;\n}(EventTarget);\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$1.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 * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url) {\n var winLoc = window$1.location;\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 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$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.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$1.console && window$1.console.groupCollapsed) {\n window$1.console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log.error(error);\n });\n\n if (window$1.console && window$1.console.groupEnd) {\n window$1.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 XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log.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$1.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.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 =\n/*#__PURE__*/\nfunction (_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(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 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 // 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 this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n if (mode !== 'disabled') {\n _this.tech_.ready(function () {\n _this.tech_.on('timeupdate', timeupdateHandler);\n }, true);\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 var _this2 = this;\n\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n mode = newMode;\n\n if (mode !== 'disabled') {\n this.tech_.ready(function () {\n _this2.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n } else {\n this.tech_.off('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 loadTrack(settings.src, _assertThisInitialized(_this));\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$1.vttjs && !(originalCue instanceof window$1.vttjs.VTTCue)) {\n cue = new window$1.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 =\n/*#__PURE__*/\nfunction (_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(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 =\n/*#__PURE__*/\nfunction (_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(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 =\n/*#__PURE__*/\nfunction (_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);\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};\nvar ALL = mergeOptions(NORMAL, REMOTE);\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 Flash} and {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech =\n/*#__PURE__*/\nfunction (_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; // keep track of whether the current source has played at all to\n // implement a very limited played()\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/flash player doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/flash player 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.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 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 * 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$1.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$1.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(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.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$1.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to set a poster from a `Tech`.\n *\n * @abstract\n */\n ;\n\n _proto.setPoster = function setPoster() {}\n /**\n * A method to check for the presence of the 'playsinline'