{"version":3,"sources":["webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack:///./node_modules/@videojs/xhr/lib/index.js","webpack:///./node_modules/mux.js/lib/utils/clock.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./src/module/Tutorial/pages/main.vue?3602","webpack:///./node_modules/mux.js/lib/tools/parse-sidx.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/@xmldom/xmldom/lib/conventions.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-types.js","webpack:///./node_modules/@videojs/xhr/lib/http-handler.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/mux.js/lib/utils/numbers.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack:///./node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./node_modules/@videojs/vhs-utils/es/stream.js","webpack:///./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/sax.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./src/module/Tutorial/pages/main.vue?164e","webpack:///./src/plugins/VideoPlayer.js","webpack:///src/module/Tutorial/pages/main.vue","webpack:///./src/module/Tutorial/pages/main.vue?0047","webpack:///./src/module/Tutorial/pages/main.vue","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/containers.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js"],"names":["regexs","mp4","webm","ogg","video","audio","text","muxerVideo","muxerAudio","muxerText","mediaTypes","upperMediaTypes","translateLegacyCodec","codec","replace","orig","profile","avcLevel","profileHex","Number","toString","slice","avcLevelHex","parseCodecs","codecString","codecs","split","result","forEach","codecType","trim","name","match","exec","toLowerCase","length","type","substring","details","push","mediaType","codecsFromDefault","master","audioGroupId","mediaGroups","AUDIO","audioGroup","audioType","default","playlists","attributes","CODECS","isAudioCodec","test","isTextCodec","getMimeForCodec","map","c","container","every","browserSupportsCodec","MediaSource","isTypeSupported","muxerSupportsCodec","i","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","dom","exports","DOMImplementation","XMLSerializer","DOMParser","window","vttjs","module","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","ID3","getId3Size","bytes","offset","flags","returnSize","footerPresent","getId3Offset","_extends","isFunction","createXHR","httpHandler","parseHeaders","headers","row","index","indexOf","key","value","Array","isArray","forEachArray","array","iterator","isEmpty","obj","hasOwnProperty","initParams","uri","options","callback","params","_createXHR","Error","called","err","response","body","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","undefined","responseText","getXml","isJson","JSON","parse","e","errorFunc","evt","clearTimeout","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","url","rawRequest","getAllResponseHeaders","cors","XDomainRequest","XMLHttpRequest","data","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","code","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","toUpperCase","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","_getPrototypeOf","o","Object","setPrototypeOf","getPrototypeOf","bind","__proto__","__esModule","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","p","_inheritsLoose","subClass","superClass","prototype","create","constructor","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","getUint64","parseSidx","view","DataView","buffer","byteOffset","byteLength","version","Uint8Array","subarray","references","referenceId","getUint32","timescale","earliestPresentationTime","firstOffset","referenceCount","getUint16","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","fn","string","alert","confirm","prompt","forEachMediaGroup","groups","groupKey","labelKey","mediaProperties","isObject","merge","_len","arguments","objects","_key","reduce","source","keys","concat","values","k","start","end","flatten","lists","x","y","from","list","findIndexes","l","a","findIndex","matchingFunction","union","keyFunction","acc","el","errors","INVALID_NUMBER_OF_PERIOD","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","_ref","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","segment","resolvedUri","rangeStr","ranges","startRange","BigInt","parseInt","endRange","MAX_SAFE_INTEGER","byterange","parseEndNumber","endNumber","isNaN","segmentRange","static","duration","_attributes$timescale","sourceDuration","periodDuration","segmentDuration","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$periodSta","periodStart","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","Infinity","now","periodStartWC","periodEndWC","segmentCount","Math","ceil","availableStart","floor","availableEnd","max","min","toSegments","number","_attributes$timescale3","_attributes$startNumb","startNumber","timeline","time","parseByDuration","_attributes$timescale4","_segmentRange$type","segments","sectionDuration","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","presentationTime","_attributes$number","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","playlist","sidx","startIndex","sidxByteRange","sidxEnd","mediaReferences","filter","r","endList","mediaSequence","reference","size","endIndex","SUPPORTED_MEDIA_TYPES","TIME_FUDGE","getUniqueTimelineStarts","timelineStarts","sort","b","findPlaylistWithName","NAME","manifest","mediaGroupPlaylists","properties","group","label","updateMediaSequenceForPlaylist","_ref2","updateSequenceNumbers","_ref3","oldPlaylists","newPlaylists","discontinuitySequence","_ref4","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","abs","discontinuity","discontinuityStarts","unshift","oldMatchingSegment","positionManifestOnTimeline","_ref5","oldManifest","newManifest","generateSidxKey","mergeDiscontiguousPlaylists","mergedPlaylists","id","lang","_acc$name$segments","apply","contentProtection","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","_attributes","BANDWIDTH","bandwidth","targetDuration","SUBTITLES","formatVttPlaylist","_m3u8Attributes","m3u8Attributes","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","language","roleLabel","autoselect","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","channel","instreamId","aspectRatio","easyReader","formatVideoPlaylist","_attributes2","RESOLUTION","width","height","frameRate","videoOnly","mimeType","contentType","audioOnly","vttOnly","_ref6","addMediaSequenceValues","_ref7","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","_ref8","_mediaGroups","dashPlaylists","locations","_ref8$sidxMapping","previousManifest","_dashPlaylists$0$attr","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","allowCache","VIDEO","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","_ref9","subs","cc","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","media","sIndex","S","d","repeat","segmentTime","t","count","nextS","identifierPattern","identifierReplacement","identifier","format","join","constructTemplateUrl","parseTemplateInfo","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","toPlaylists","representations","findChildren","element","childNodes","tagName","getContent","textContent","parseDivisionValue","parseFloat","prev","current","parseDuration","str","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","_match$slice","year","month","day","hour","minute","second","parseDate","dateRegex","Date","parsers","mediaPresentationDuration","parsedValue","DEFAULT","parseAttributes","parseFn","keySystemsMap","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","s","tag","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","contentProtectionNodes","node","schemeIdUri","keySystem","psshNode","pssh","parseCaptionServiceMetadata","_value$split","_values","_value$split2","_value$split2$","opts","opt","_opt$split","val","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","attrs","accessibility","labelVal","nodeValue","toAdaptationSets","mpdAttributes","mpdBaseUrls","period","adaptationSets","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periodNodes","periods","priorPeriod","representationInfo","manifestString","xml","parser","parseFromString","getElementsByTagName","parseUTCTimingScheme","UTCTimingNode","parsedManifestInfo","parseUTCTiming","find","predicate","ac","item","freeze","object","oc","assign","target","TypeError","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","SVG","XML","XMLNS","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","httpResponseHandler","decodeResponseBody","responseBody","cause","TextDecoder","charset","getCharset","decode","String","fromCharCode","contentTypeHeader","_contentType$split","SafeParseTuple","reviver","error","isNativeFunction","_wrapNativeSuper","Class","_cache","Map","has","get","set","Wrapper","this","enumerable","writable","configurable","MAX_UINT32","pow","uint8","dv","getBigUint64","autoKeyword","directionSetting","alignSetting","findDirectionSetting","dir","findAlignSetting","align","startTime","endTime","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","defineProperties","setting","SyntaxError","console","warn","displayState","getCueAsHTML","convertCueToDOMTree","conventions","entities","sax","ParseError","XMLReader","normalizeLineEndings","input","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","errorHandler","isCallback","Function","build","msg","_locator","cdata","position","lineNumber","columnNumber","systemId","_toString","chars","substr","java","appendElement","hander","currentElement","appendChild","doc","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","normalize","startDocument","createDocument","documentURI","startElement","namespaceURI","localName","qName","createElementNS","len","getURI","getValue","attr","getQName","createAttributeNS","getLocator","setAttributeNode","endElement","parentNode","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","createTextNode","skippedEntity","endDocument","comment","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","isNativeReflectConstruct","_construct","Parent","args","Constructor","instance","amp","apos","gt","lt","quot","Aacute","aacute","Abreve","abreve","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","AMP","And","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","ap","apacir","apE","ape","apid","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","Barwed","barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","Because","because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxDL","boxDl","boxdL","boxdl","boxDR","boxDr","boxdR","boxdr","boxH","boxh","boxHD","boxHd","boxhD","boxhd","boxHU","boxHu","boxhU","boxhu","boxminus","boxplus","boxtimes","boxUL","boxUl","boxuL","boxul","boxUR","boxUr","boxuR","boxur","boxV","boxv","boxVH","boxVh","boxvH","boxvh","boxVL","boxVl","boxvL","boxvl","boxVR","boxVr","boxvR","boxvr","bprime","Breve","breve","brvbar","Bscr","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","Cap","cap","capand","capbrcup","capcap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","CenterDot","centerdot","Cfr","cfr","CHcy","chcy","check","checkmark","Chi","chi","cir","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","Colon","colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","Conint","conint","ContourIntegral","Copf","copf","coprod","Coproduct","COPY","copy","copysr","CounterClockwiseContourIntegral","crarr","Cross","cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","Cup","cup","cupbrcap","CupCap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","Dagger","dagger","daleth","Darr","dArr","darr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","DD","dd","ddagger","ddarr","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","Diamond","diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","Downarrow","downarrow","DownArrowBar","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","ecir","Ecirc","ecirc","ecolon","Ecy","ecy","eDDot","Edot","eDot","edot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","Element","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp","emsp13","emsp14","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","Escr","escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","ExponentialE","exponentiale","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","ForAll","forall","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","Fscr","fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","gE","ge","gEl","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","Gg","gg","ggg","gimel","GJcy","gjcy","gl","gla","glE","glj","gnap","gnapprox","gnE","gne","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","Gt","GT","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","hArr","harr","harrcir","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","Hfr","hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","Hopf","hopf","horbar","HorizontalLine","Hscr","hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","Ifr","ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Im","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","imof","imped","Implies","in","incare","infin","infintie","inodot","Int","int","intcal","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","Iscr","iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","Lang","langd","langle","lap","Laplacetrf","laquo","Larr","lArr","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","lAtail","latail","late","lates","lBarr","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","lE","le","LeftAngleBracket","LeftArrow","Leftarrow","leftarrow","LeftArrowBar","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","LeftRightArrow","Leftrightarrow","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","leftthreetimes","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","lEg","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","Ll","ll","llarr","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoust","lmoustache","lnap","lnapprox","lnE","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","LongLeftArrow","Longleftarrow","longleftarrow","LongLeftRightArrow","Longleftrightarrow","longleftrightarrow","longmapsto","LongRightArrow","Longrightarrow","longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","Lscr","lscr","Lsh","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","Lt","LT","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","Mscr","mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","ne","nearhk","neArr","nearr","nearrow","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nhArr","nharr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlArr","nlarr","nldr","nlE","nle","nLeftarrow","nleftarrow","nLeftrightarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","Nopf","nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nRightarrow","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","num","numero","numsp","nvap","nVDash","nVdash","nvDash","nvdash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwArr","nwarr","nwarrow","nwnear","Oacute","oacute","oast","ocir","Ocirc","ocirc","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","Or","or","orarr","ord","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","Otimes","otimes","otimesas","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","par","para","parallel","parsim","parsl","part","PartialD","Pcy","pcy","percnt","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","Popf","popf","pound","Pr","pr","prap","prcue","prE","pre","prec","precapprox","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","precsim","Prime","prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportion","Proportional","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","Qopf","qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","QUOT","rAarr","race","Racute","racute","radic","raemptyv","Rang","rang","rangd","rangle","raquo","Rarr","rArr","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","rAtail","ratail","ratio","rationals","RBarr","rBarr","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","Re","real","realine","realpart","reals","rect","REG","reg","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","Rfr","rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrow","Rightarrow","rightarrow","RightArrowBar","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTee","RightTeeArrow","RightTeeVector","rightthreetimes","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","Ropf","ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","Rscr","rscr","Rsh","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","Sc","sc","scap","Scaron","scaron","sccue","scE","sce","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdot","sdotb","sdote","searhk","seArr","searr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","sol","solb","solbar","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","Square","square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","Subset","subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","Sum","sum","sung","Sup","sup","sup1","sup2","sup3","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","Supset","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swArr","swarr","swarrow","swnwar","szlig","Tab","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","Therefore","therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","thinsp","ThinSpace","thkap","thksim","THORN","thorn","Tilde","tilde","TildeEqual","TildeFullEqual","TildeTilde","times","timesb","timesbar","timesd","tint","toea","top","topbot","topcir","Topf","topf","topfork","tosa","tprime","TRADE","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","Uarr","uArr","uarr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrow","Uparrow","uparrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","Updownarrow","updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","Upsi","upsi","upsih","Upsilon","upsilon","UpTee","UpTeeArrow","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","vArr","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","Vbar","vBar","vBarv","Vcy","vcy","VDash","Vdash","vDash","vdash","Vdashl","Vee","vee","veebar","veeeq","vellip","Verbar","verbar","Vert","vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","Wedge","wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xhArr","xharr","Xi","xi","xlArr","xlarr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrArr","xrarr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","Yuml","yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","Zfr","zfr","ZHcy","zhcy","zigrarr","Zopf","zopf","Zscr","zscr","zwj","zwnj","win","global","_isNativeFunction","document","_objCreate","F","ParsingError","errorData","message","parseTimeStamp","computeSeconds","h","m","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","v","parseCue","cue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","settings","region","alt","vals","vals0","integer","percent","vertical","line","lineAlign","snapToLines","left","center","middle","right","positionAlign","skipWhitespace","BadSignature","dflt","defaultKey","n","TEXTAREA_ELEMENT","createElement","TAG_NAME","u","ruby","rt","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape","innerHTML","shouldAdd","annotation","rootDiv","tagStack","pop","classes","cl","bgColor","colorName","propName","propValue","style","className","strongRTLRanges","isStrongRTLChar","charCode","currentRange","determineBidi","cueDiv","nodeStack","pushNodes","nextTextNode","innerText","charCodeAt","computeLinePos","track","textTrackList","mediaElement","trackList","mode","StyleBox","CueStyleBox","styleOptions","styles","color","backgroundColor","display","writingMode","unicodeBidi","applyStyles","direction","textAlign","font","whiteSpace","textPos","formatStyle","move","box","BoxPosition","lh","offsetHeight","offsetWidth","offsetTop","rects","getClientRects","getBoundingClientRect","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","step","round","maxPosition","initialAxis","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","intersectArea","getSimpleBoxPosition","ret","StringDecoder","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","processCues","cues","overlay","firstChild","removeChild","paddedOverlay","shouldCompute","margin","fontSize","Parser","decoder","state","reportOrThrowError","onparsingerror","collectNextLine","pos","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","oncue","flush","onflush","root","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","path","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","query","fragment","baseURLPath","newPath","lastIndexOf","parts","Stream","listeners","_proto","on","listener","off","splice","trigger","callbacks","_length","_i","dispose","pipe","destination","_Stream","LineStream","_this","nextNewline","TAB","parseByterange","byterangeString","attributeSeparator","keyvalue","RegExp","ParseStream","customParsers","tagMappers","event","_this2","newLines","mapper","mappedLine","newLine","tagType","title","playlistType","allowed","URI","BYTERANGE","resolution","dateTimeString","dateTimeObject","IV","Uint32Array","PRECISE","subkey","addParser","_this3","expression","customType","dataParser","addTagMapper","mapFn","camelCase","camelCaseKeys","setHoldBack","serverControl","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","lineStream","parseStream","currentMap","uris","currentUri","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","lastByterangeEnd","lastPartByterangeEnd","preloadHints","preloadSegment","entry","mediaGroup","rendition","endlist","inf","METHOD","KEYFORMAT","VALID_METHODS","KEYID","keyId","iv","isFinite","TYPE","mediaGroupType","AUTOSELECT","LANGUAGE","CHARACTERISTICS","characteristics","FORCED","forced","targetduration","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","partIndex","renditionReports","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","custom","missing","chunk","countBits","countBytes","padStart","isArrayBufferView","ArrayBuffer","isView","isTypedArray","toUint8","toHexString","toBinaryString","BYTE_TABLE","bytesToNumber","Uint16Array","_temp","_ref$signed","signed","_ref$le","total","byte","exponent","numberToBytes","_temp2","_ref2$le","byteCount","byteIndex","bytesToString","escape","stringToBytes","stringIsBytes","concatTypedArrays","buffers","totalLen","buf","tempBuffer","bytesMatch","_temp3","_ref3$offset","_ref3$mask","mask","bByte","aByte","keyCode","searchInput","hasKeyCode","which","names","search","foundNamedKey","codes","aliases","isEventKey","nameOrCode","alias","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","captureStackTrace","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","charAt","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","config","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","addAttribute","qname","attributeNames","addValue","attrName","setTagName","nsp","nsPrefix","_copy","ns","elStartEnd","elEndStart","next","matchs","pubid","sysid","lastMatch","endDTD","lastIndex","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","src","dest","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ownerDocument","ls","__set__","$$length","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","Node","_xmlEncoder","_visitNode","nextSibling","Document","_nsMap","remove","_onUpdateChild","newChild","cs","child","_removeChild","previous","previousSibling","lastChild","hasValidParentNodeType","nodeType","hasInsertableNodeType","isElementNode","isTextNode","isDocTypeNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","hasElementChildThatIsNotChild","assertPreInsertionValidity1to5","parent","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","assertPreReplacementValidityInDocument","hasDoctypeChildThatIsNotChild","_insertBefore","_inDocumentAssertion","cp","newFirst","newLast","_appendSingleChild","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","refNode","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","nsi","internalSubset","importNode","deep","node2","cloneNode","attrs2","_ownerElement","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","defineProperty","getTextContent","render","_vm","_h","$createElement","_c","_self","staticClass","class","$store","isDashboard","_v","_s","lbl","activeKey","changeActiveKey","_l","currentLocale","vdo","link","cover","description","attachments","item_a","index_a","filename","_e","staticRenderFns","props","loop","autoPlay","poster","fluid","techOrder","controls","autoplay","preload","watch","play","methods","getPlayer","that","videojs","$emit","$nextTick","beforeMount","mounted","beforeDestroy","components","Header","VideoPlayer","mixins","jsonTutorial","dataDetail","isSkeleton","isNodata","created","init","getConfigTutorial","Config","component","_inherits","doccy","minDoc","topLevel","browserApi","version$5","hooks_","hooks","hook","removeHook","hookOnce","original","wrapper","FullscreenApi","prefixed","apiMap","specApi","history","LogByTypeFactory","log","level","lvl","levels","lvlRegExp","info","createLogger$1","logByType","createLogger","subname","all","debug","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","log$1","each","initial","accum","sources","isPlain","computedStyle","getComputedStyle","computedStyleValue","getPropertyValue","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_WINDOWS","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","isNonBlankString","throwIfWhitespace","classRegExp","isEl","isInFrame","createQuerier","selector","context","querySelector","ctx","createEl","content","getOwnPropertyNames","appendContent","prependTo","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","toggleClass","classToToggle","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","findPosition","offsetParent","fullscreenElement","offsetLeft","getPointerPosition","translated","transform","boxTarget","boxW","offsetY","offsetX","changedTouches","pageX","pageY","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","videojs$1","$","$$","Dom","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","FakeWeakMap","createStyleElement","setTextContent","styleSheet","cssText","_initialGuid","_guid","newGUID","WeakMap","vdata","performance","access","_supportsPassive","DomData","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","supportsPassive","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","uid","bound","throttle","last","throttled","debounce","immediate","cancel","debounced","_later","EventTarget$2","allowedEvents_","ael","dispatchEvent","queueTrigger","oldTimeout","objName","name_","isEvented","eventBusEl_","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","el_","StatefulMixin","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","titleCaseEquals","str1","str2","mergeOptions$3","MapSham","map_","thisArg","Map$1","SetSham","set_","Set$1","Set","Component$1","Component","ready","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","restoreEl","isDisposed","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","contentEl","contentEl_","children","getChildById","getChild","getDescendant","currentChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","childFound","compEl","workingChildren","parentOptions","handleAdd","playerOptions","Tech","some","wchild","isTech","buildCSSClass","isReady_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","_this4","supportsRaf_","requestNamedAnimationFrame","_this5","cancelNamedAnimationFrame","cancelAnimationFrame","_this6","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","rangeCheck","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","timeRangesObj","Symbol","createTimeRanges","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ModalDialog","_Component","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","tabIndex","previouslyActiveEl_","desc","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","closeButton","content_","activeEl","activeElement","playerEl","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks_","addTrack","labelchange_","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","labelchange","disableOthers$1","enabled","AudioTrackList","_TrackList","changing_","enabledChange_","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","newLabel","parseUrl","host","getAbsoluteURL","getFileExtension","splitPathRe","isCrossOrigin","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseCues","srcContent","groupCollapsed","groupEnd","loadTrack","tech_","loaded_","TextTrack","_Track","srclang","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","rvf_","requestVideoFrameCallback","disposeHandler","stopTracking","startTracking","newMode","ct","currentTime","active","cancelVideoFrameCallback","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","queuedHanders_","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","manualProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","setCrossOrigin","error_","played","setScrubbing","scrubbing","setCurrentTime","trackListChanges","addWebVttScript_","script","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","disablePictureInPicture","setDisablePictureInPicture","cb","_this8","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","featuresVideoFrameCallback","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","setSourceHelper","setTech","mw","reduceRight","middlewareIterator","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","seekable","volume","ended","allowedSetters","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","_middleware","mwrest","_src","MimetypesKind","opus","ogv","mov","m4v","mkv","m4a","mp3","aac","caf","flac","oga","wav","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","j","techName","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","enabled_","clickHandler","PosterImage","_ClickableComponent","update","update_","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","userPref","selectedLanguage","clearDisplay","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","textOpacity","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","guide","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","updateContent","updateTextNode_","span","labelText_","textNode_","formattedTime_","oldNode","CurrentTimeDisplay","_TimeDisplay","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","displayNegative","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","isLive","seekableEnd","bufferedEnd","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","write","updateTime","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","SeekBar","_Slider","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","userSeek_","nextSeekedFromUser","seekableStart","videoWasPlaying","mouseDown","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","isSourceAudio","currentType","audioPosterMode","audioOnlyMode","isInPictureInPicture","exitPictureInPicture","pictureInPictureEnabled","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","updateVolume","MouseVolumeLevelDisplay","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","handleKeyPressHandler_","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","addEventListenerForItem","removeEventListenerForItem","addItem","childComponent","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","items","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","TrackButton","_MenuButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","selectCurrentItem_","track_","findChaptersTrack","setTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","parentSpan","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","featuresNativeAudioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","currentRate","currentIndex","newIndex","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","LOCAL_STORAGE_KEY$1","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","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","defaults","trackingThreshold","liveTolerance","LiveTracker","handleVisibilityChange_","handleVisibilityChange","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","setter","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","webkitKeys","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canControl","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","mpegurlRE","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","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","isFullscreen_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","audioOnlyMode_","audioPosterMode_","audioOnlyCache_","playerHeight","hiddenChildren","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","promise","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userActions","click","inAllowedEls","doubleClick","userWasActive","cancelable","toggleFullscreenClass_","targetPlayer","isFs","fullscreen","msMatchesSelector","_this9","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","_this10","resolve","play_","_this11","isSrcReady","isSafariOrIOS","waitToPlay_","isNativeReplay","resetProgressBar_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","_this12","preferFullWindow","enterFullWindow","exitFullscreenHelper_","_this13","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","foundSourceAndTech","_this14","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","flip","finder","sourceOrder","handleSrc_","isRetry","_this15","resetRetryOnError_","middlewareSource","src_","notSupportedMessage","retryOnError","retry","stopListeningForErrors","_this16","sourceTech","_this17","doReset_","resetControlBarUI_","resetPlaybackRate_","resetVolumeBar_","durationDisplay","currentSources","techAutoplay","newPoster","usingNativeControls_","_this18","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","isAudio_","enableAudioOnlyUI_","_this19","playerChildren","controlBarHeight","disableAudioOnlyUI_","_this20","exitPromises","enablePosterModeUI_","disablePosterModeUI_","_this21","audioOnlyModePromise","_obj","toJSON","createModal","_this22","modal","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this23","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","createPluginFactory","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","hasPlugin","hasLogged","extend","subClassMethods","super_","normalizeId","defaultView","PlayerComponent","getPlayers","nId","_tag","_player","getAllPlayers","writeable","mergeOptions","addLanguage","_mergeOptions","createTimeRange","EventTarget","resolveManifestRedirect","handleManifestRedirect","req","responseURL","logger","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","results","findRange","findNextRange","findGaps","bufferIntersection","bufferA","bufferB","arity","extents","printableRange","strArr","timeUntilRebuffer","timeRangesToArray","timeRangesList","isRangeDifferent","lastBufferedEnd","timeAheadOf","segmentDurationWithParts","getPartsAndSegments","si","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","partHoldBack","holdBack","backwardDuration","endSequence","forwardDuration","intervalDuration","expired","backward","forward","totalDuration","sumDurations","defaultDuration","durationList","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","experimentalExactManifestTimings","partsAndSegments","partAndSegment","_partAndSegment","_i3","_i4","_partAndSegment2","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isDisabled","isAes","estimateSegmentRequestTime","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","_ret","Playlist","createPlaylistID","groupID","parseManifest","onwarn","oninfo","_ref$customTagParsers","customTagParsers","_ref$customTagMappers","customTagMappers","experimentalLLHLS","customParser","setupMediaPlaylist","playlistErrors_","setupMediaPlaylists","resolveMediaGroupUris","masterForMedia","addPropertiesToMaster","createGroupID","phonyUri","audioOnlyMaster","groupId","mergeOptions$2","EventTarget$1","addLLHLSQueryDirectives","parameters","nextMSN","nextPart","_HLS_part","_HLS_msn","canSkipUntil","_HLS_skip","parsedUri","searchParams","updateSegment","skipped","updateSegments","oldSegments","newSegments","newSegment","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMaster$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","refreshDelay","lastPart","lastDuration","PlaylistLoader","vhs","logger_","_options$withCredenti","_options$handleManife","handleManifestRedirects","vhs_","vhsOptions","handleMediaupdatetimeout_","playlistRequestError","haveMetadata","playlistString","startingState","parseManifest_","playlistObject","lastRequest","pendingMedia_","media_","updateMediaUpdateTimeout_","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","shouldDelay","delay","mediaChange","masterPlaylistRef","started","setupInitialPlaylist","srcUri","videojsXHR","mergeOptions$1","callbackWrapper","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","timedout","xhrFactory","XhrFunction","beforeRequest","Vhs","newOptions","xhrMethod","originalAbort","byterangeStr","byterangeEnd","byterangeStart","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","segmentKeyId","hexDump","ascii","tagDump","textRanges","utils","SEGMENT_END_FUDGE_PERCENT","playerTimeToProgramTime","playerTime","transmuxerPrependedSeconds","videoTimingInfo","transmuxedStart","transmuxedPresentationStart","startOfSegment","offsetFromSegmentStart","getTime","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","programDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","_ref$time","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","callbackOnCompleted","containerRequest","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","dashGroupId","playlistId","parseMasterXml","masterXml","srcUrl","removeOldMediaGroupLabels","newMaster","updateMaster","oldMaster","noChanges","playlistUpdate","_playlistUpdate","equivalentSidx","neitherMap","equivalentMap","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","filterChangedSidxMappings","videoSidx","mediaGroupSidx","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","masterPlaylistLoader_","isMaster_","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","childPlaylist_","requestErrored_","addSidxSegments_","fin","internal","blacklistDuration","_playlist$sidx$bytera","mediaRequest_","minimumUpdatePeriodTimeout_","createMupOnMedia_","hasPendingRequest","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMaster_","masterChanged","haveMaster_","masterXml_","date","masterLoaded_","handleMaster_","syncClientServerClock_","done","utcTiming","clientOffset_","serverTime","mpl","mup","createMUPTimeout_","mediaID","mediaChanged","createMediaUpdateTimeout","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","stringToArrayBuffer","browserWorkerPolyFill","workerObj","createObjectURL","Blob","blob","BlobBuilder","getBlob","factory","objectUrl","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","workerCode$1","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","MAX_UINT32$1","getUint64$2","numbers","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","payload","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","dataOffset","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","mp4Generator","fileType","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","frames","nalCount","nalUnitType","dts","pts","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","frame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils","generateSampleTable","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","arr","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","ONE_SECOND_IN_TS$4","clock","sumFrameByteLengths","currentObj","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","concatenateFrameData","audioFrameUtils","ONE_SECOND_IN_TS$3","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","scale","trackDecodeInfo","USER_DATA_REGISTERED_ITU_T_T35","RBSP_TRAILING_BITS","parseSei","payloadType","payloadSize","userIdentifier","parseUserData","sei","parseCaptionPackets","userData","ccData","discardEmulationPreventionBytes$1","newLength","newData","emulationPreventionBytesPositions","sourceIndex","captionPacketParser","discardEmulationPreventionBytes","CaptionStream$1","CaptionStream","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","idx","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","get708CharFromCode","newCode","within708TextBlock","Cea708Window","windowNum","clearText","pendingNewLine","winAttr","penAttr","penLoc","penColor","visible","rowLock","columnLock","relativePositioning","anchorVertical","anchorHorizontal","anchorPoint","rowCount","virtualRowCount","columnCount","windowStyle","penStyle","getText","rows","rowIdx","beforeRowOverflow","addText","backspace","Cea708Service","serviceNum","encoding","currentWindow","windows","createTextDecoder","startPts","setCurrentWindow","textDecoder_","serviceProps","captionServiceEncodings","serviceName","serviceEncodings","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","initService","handleText","multiByteCharacter","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","isExtended","getPts","flushDisplayed","_char","charCodeArray","isMultiByte","extended","currentByte","nextByte","firstByte","secondByte","fillOpacity","fillRed","fillGreen","fillBlue","borderType","borderRed","borderGreen","borderBlue","wordWrap","printDirection","scrollDirection","justify","effectSpeed","effectDirection","displayEffect","displayedText","winId","endPts","pushCaption","textTag","penSize","italics","underline","edgeType","fontStyle","fgOpacity","fgRed","fgGreen","fgBlue","bgOpacity","bgRed","bgGreen","bgBlue","edgeRed","edgeGreen","edgeBlue","column","CHARACTER_TRANSLATION","getCharFromCode","BOTTOM_ROW","ROWS","createDisplayBuffer","field","dataChannel","field_","dataChannel_","setConstants","swap","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","isColorPAC","isNormalChar","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","_char2","newBaseRow","popOn","baseRow","rollUp","paintOn","captionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","TimestampRolloverStream$1","TimestampRolloverStream","lastDTS","referenceDTS","type_","_MetadataStream","timestampRolloverStream","handleRollover","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","tagParsers","TXXX","WXXX","PRIV","owner","privateData","tagSize","bufferSize","dispatchType","frameStart","frameSize","frameHeader","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","MP2T_PACKET_LENGTH$1","SYNC_BYTE$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","sectionLength","tableEnd","programInfoLength","streamType","pid","processPes_","STREAM_TYPES","h264","adts","segmentHadPmt","timedMetadata","parsePes","pes","ptsDtsFlags","startPrefix","packetLength","forceFlush","packetFlushable","trackId","flushStreams_","m2ts","PAT_PID","MP2T_PACKET_LENGTH","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","skipWarn_","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","nalUnitTypeCode","expGolombDecoder","deltaScale","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","aspectRatioIdc","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","parseSyncSafeInteger","percentEncode","parseIso88591","parseAdtsSize","lowThree","highTwo","parseType$2","parseSampleRate","parseAacTimestamp","isLikelyAacData","parseType","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","AUDIO_PROPERTIES","audioProperties","VIDEO_PROPERTIES","videoProperties","ONE_SECOND_IN_TS$1","retriggerForStream","addPipelineLogRetriggers","transmuxer","pipeline","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","firstSequenceNumber","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","halfSecond","allowableOverlap","nearestDistance","alignIndex","gopIndex","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","output","audioTrack","caption","id3","captionStreams","cueTime","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","Transmuxer","VideoSegmentStream","AudioSegmentStream","toUnsigned$3","toHexString$1","bin","toUnsigned","parseType$1","parseType_1","toUnsigned$2","findBox","subresults","findBox_1","toUnsigned$1","getUint64$1","parseTfdt","parseSampleFlags","parseSampleFlags_1","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTrun","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","parseTfhd","commonjsGlobal","globalThis","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","window_1","mapToSample","approximateOffset","findSeiNals","avcStream","seiNal","lastMatchedSample","avcView","logs","seiNals","matchingSample","parseSamples","truns","allSamples","trackRun","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","headerInfo","parseEmbeddedCaptions","trackNals","CaptionParser","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","captionParser","traks","lowestTime","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","getUint8","tkhdVersion","sampleDescriptions","codecConfig","codecConfigType","codecBox","probe$2","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","nalType","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","probe","SYNC_BYTE","parsePsi_","table","parseAudioPes_","pesType","parsed","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","inspect","isAacData","tsInspector","wireTransmuxerEvents","initArray","typedArray","postMessage","action","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","pushMp4Captions","trackIds","probeMp4StartTime","probeMp4Tracks","probeTs","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","clearAllMp4Captions","clearParsedMp4Captions","setTimestampOffset","timestampOffset","appendStart","onmessage","messageHandlers","TransmuxWorker","handleData_","transmuxedData","_event$data$segment","videoFrameDtsTime","videoFramePtsTime","handleDone_","handleGopInfo_","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","waitForEndedTimelineEvent","handleMessage","currentTransmux","dequeue","transmuxQueue","processAction","enqueueAction","transmux","createTransmuxer","term","segmentTransmuxer","workerCallback","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","FAILURE","TIMEOUT","ABORTED","abortAll","activeXhrs","getRequestStats","getProgressStats","progressEvent","stats","handleErrors","handleKeyResponse","finishProcessingFn","errorObj","parseInitSegment","_callback","handleInitSegmentResponse","encryptedBytes","parseError","handleSegmentResponse","newBytes","lastReachedChar","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","id3Frames","probeResult","handleSegmentBytes","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","keyBytes","decryptionWorker","decryptionHandler","decrypted","encrypted","decryptSegment","requestId","decryptedBytes","waitForCompletion","didError","segmentFinish","endOfAllRequests","handleLoadEnd","_ref10","loadendState","abortFn","calledAbortFn","handleProgress","_ref11","progressFn","firstBytesReceivedAt","mediaSegmentRequest","_ref12","xhrOptions","keyRequestOptions","keyRequestCallback","keyXhr","differentMapKey","mapKeyRequestOptions","mapKeyRequestCallback","mapKeyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","activeXhr","logFn$1","getCodecs","mediaAttributes","isMaat","unwrapCodecList","codecList","codecCount","codecObj","codecsForPlaylist","codecInfo","defaultCodecs","logFn","representationToString","safeGetComputedStyle","property","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","comparePlaylistResolution","leftWidth","rightWidth","simpleSelector","playerBandwidth","playerWidth","limitRenditionByPlayerDimensions","masterPlaylistController","getAudioTrackPlaylists_","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","resolutionBestRep","experimentalLeastPixelDiffSelector","leastPixelDiffList","pixelDiff","chosenRep","_type","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","masterPlaylistController_","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","minRebufferMaxBandwidthSelector","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","concatSegments","segmentObj","createCaptionsTrackIfNotExists","inbandTextTracks","def","captionService","addCaptionData","captionArray","Cue","WebKitDataCue","deprecateOldCue","addMetadata","metadataArray","videoDuration","metadataTrack","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","createMetadataTrackIfNotExists","inBandMetadataTrackDispatchType","removeCuesFromTrack","removeDuplicateCuesFromTrack","duplicates","occurrences","dupe","gopsSafeToAlignWith","mapping","currentTimePts","updateGopBuffer","removeGopBuffer","updatedBuffer","shallowEqual","akeys","bkeys","QUOTA_EXCEEDED_ERR","getSyncSegmentCandidate","targetTime","timelineSegments","MIN_BACK_BUFFER","CHECK_BUFFER_DELAY","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","illegalMediaSwitch","loaderType","startingMedia","safeBackBufferTrimTime","trimTime","maxTrimTime","segmentInfoString","_segmentInfo$playlist","_segmentInfo$playlist2","mediaIndex","segmentLen","selection","isSyncRequest","independent","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","timestampOffsetForSegment","overrideCheck","shouldWaitForTimelineChange","timelineChangeController","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","mediaDuration","timingInfos","maxDuration","typeTimingInfo","segmentTooLong","getTroublesomeSegmentDurationMessage","sourceType","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","SegmentLoader","_videojs$EventTarget","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","loaderType_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","timelineChangeController_","shouldSaveSegmentTimingInfo_","useDtsForTimestampOffset_","useDtsForTimestampOffset","captionServices_","checkBufferTimeout_","currentTimeline_","pendingSegment_","xhrOptions_","pendingSegments_","audioDisabled_","isPendingTimestampOffset_","gopBuffer_","timeMapping_","safeAppend_","appendInitSegment_","playlistOfLastInitSegment_","callQueue_","loadQueue_","metadataQueue_","waitingOnRemove_","quotaExceededErrorRetryTimeout_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","decrypter_","decrypter","syncController_","syncPoint_","transmuxer_","createTransmuxer_","triggerSyncInfoUpdate_","isEndOfStream_","ended_","fetchAtBuffer_","newState","hasEnoughInfoToAppend_","processCallQueue_","hasEnoughInfoToLoad_","processLoadQueue_","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","setAudio","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","checkForAbort_","_error","endOfStream","buffered_","getMediaInfo_","videoBuffered","audioBuffered","initSegmentForMap","storedMap","segmentKey","storedKey","couldBeginLoading_","playlist_","init_","resetEverything","newPlaylist","syncInfo","setDateTimeMappingForStart","oldId","resyncLoader","resetLoader","mediaSequenceDiff","saveExpiredSegmentInfo","force","removesRemaining","removeFinished","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","_Playlist$getMediaInf","_partIndex","nextSegment","lastSegmentLastPart","generateSegmentInfo_","forceTimestampOffset","random","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","videoTimestampOffset","earlyAbortWhenNeeded_","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","handleAbort_","handleProgress_","simpleSegment","handleTrackInfo_","checkForIllegalMediaSwitch","handleTimingInfo_","timeType","timingInfoProperty","handleCaptions_","captionData","hasAppendedData_","captionTracks","captionTrack","trackName","_captionTracks$trackN","handleId3_","processMetadataQueue_","callQueue","fun","loadQueue","getCurrentMediaInfo_","getPendingSegmentPlaylist","setTimeMapping_","updateMediaSecondsLoaded_","firstVideoFrameTimeForData","useVideoTimingInfo","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","appendData_","changedTimestampOffset","getInitSegmentAndUpdateState_","handleQuotaExceededError_","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","handleAppendError_","appendBuffer","handleSegmentTimingInfo_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","segmentRequestFinished_","removeToTime","previousSegment","saveTransferStats_","saveBandwidthRelatedStats_","handleTimeout_","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","didChange","getSegmentStartTimeForTimestampOffsetCalculation_","prioritizedTimingInfo","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","badSegmentGuess","badPartGuess","segmentProcessingTime","segmentProcessingThroughput","Vhs$1","toTitleCase","bufferTypes","_updating","sourceBuffer","queuePending","nextQueueIndexOfType","queueEntry","shiftQueue","queueIndex","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","_duration","addSourceBuffer","mime","removeSourceBuffer","changeType","pushQueue","onUpdateend","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","initializedEme","hasCreatedSourceBuffers","hasInitializedAnyEme","createSourceBuffers","addOrChangeSourceBuffers","canRemoveSourceBuffer","canChangeType","SourceBuffer","processedAppend_","videoBuffer","que","audioBuffer","setDuration","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char3","NoVttJsError","_Error","VTTSegmentLoader","_SegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","loadVttJs","combinedByteLength","combinedSegment","timestampOffsetForTimeline","checkTimestampOffset","skipEmptySegments_","stopForError","requested","parseVTTCues_","updateTimeMapping_","timelines","decodeBytesToString","timestampmap","MPEGTS","LOCAL","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","updateAdCues","_segment$cueOutCont$s","adOffset","adTotal","MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC","syncPointStrategies","run","timelineToDatetimeMappings","lastDistance","datetimeMapping","z","discontinuitySync","discontinuities","SyncController","syncPoints","runStrategies_","selectSyncPoint_","getExpiredTime","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","firstSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","workerCode","createCommonjsModule","basedir","require","commonjsRequire","createClass","_defineProperties","_createClass","protoProps","staticProps","inheritsLoose","unpad","padded","precompute","xInv","x2","x4","x8","tEnc","tDec","tables","encTable","decTable","sbox","sboxInv","th","aesTables","AES","tmp","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","init0","init1","init2","init3","wordIx","encrypted32","Int32Array","decipher","decrypted32","Decrypter","STEP","asyncStream_","decryptChunk_","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","_settings$segmentLoad","segmentLoaders","mainSegmentLoader","activeTrack","activeGroup","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","isMasterPlaylist","onGroupChanging","onTrackChanged","_settings$segmentLoad2","lastTrack","mpc","selectPlaylist","fastQualityChange_","blacklistCurrentPlaylist","defaultTrack","setupListeners","requestOptions","initialize","_settings$mediaTypes$","variantLabel","_settings$mediaTypes$2","_settings$mediaTypes$3","newProps","groupMatch","variants","groupKeys","groupPropertyList","activeTrack_","setupMediaGroups","_settings$segmentLoad3","audioSegmentLoader","activeAudioGroup","onAudioTrackChanged","createMediaTypes","ABORT_EARLY_BLACKLIST_SECONDS","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","bufferLowWaterLine","bufferHighWaterLine","experimentalBufferBasedABR","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","_logLine","MasterPlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","onLoad","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","appendsToLoadedData_","timeToLoadedData_","checkABR_","shouldSwitchToMedia_","switchMedia_","newId","abrTimer_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","updatedPlaylist","selectedMedia","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","haveJsonSource","handleUpdatedMediaPlaylist","lastExcludeReason_","playlistOutdated","stuckAtPlaylistEnd_","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","mediaSecondsLoaded_","smoothQualityChange_","mainMediaInfo","absolutePlaylistEnd","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","updateDuration_","areMediaTypesKnown_","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","playlistCodecs","unsupportedAudio","supportFunction","unsupportedCodecs","supporter","variantAudioGroup","switchMessages","newCodec","oldCodec","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","blacklistReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","enableFunction","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","vhsHandler","smoothQualityChange","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","setSeekingHandlers","seekingAppendCheck_","fixesBadSeeks_","clearSeekingAppendCheck_","watchForBadSeeking_","checkCurrentTime_","isBufferedDifferent","waiting_","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","minAppendedDuration","bufferedToCheck","timeAhead","nextRange","livePoint","videoUnderflow","videoUnderflow_","difference","skipTheGap_","allowedEnd","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","reinitPlugin","reloadSourceOnError","version$4","version$3","version$2","version$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","LOCAL_STORAGE_KEY","handleVhsMediaChange","qualityLevels","selectedIndex_","handleVhsLoadedMetadata","addQualityLevel","emeKeySystems","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","getAllPsshKeySystemsOptions","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","initializeMediaKeys","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","setupEmeOptions","sourceOptions","getVhsLocalStorage","storedObject","updateVhsLocalStorage","objectToStore","expandDataUri","dataUri","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","VhsHandler","hls","initialBandwidth","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","useBandwidthFromLocalStorage","useNetworkInformationApi","option","playbackWatcherOptions","playbackWatcher_","defaultSelector","playerBandwidthEst","networkInformation","connection","mozConnection","webkitConnection","tenMbpsAsBitsPerSecond","networkInfoBandwidthEstBitsPerSec","downlink","invThroughput","invBandwidth","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","timeToLoadedData","currentTech","playerDimensions","setupEme_","setupQualityLevels_","mediaSourceUrl_","createKeySessions_","audioPlaylistLoader","handleWaitingForKey_","didSetupEmeOptions","masterPlaylist","_videojs$log","excludedHDPlaylists","qualityLevels_","convertToProgramTime","VhsSourceHandler","simpleType","getOverrideNative","canUseMsePlayback","_options$vhs","_options$hls","defaultOverrideNative","_vhs$overrideNative","_hls$overrideNative","legacyOverrideNative","supportsNativeMediaSources","DESCRIPTORS","normalizePaths","paths","headerSize","_DESCRIPTORS$z","dependsOnEsId","ocrEsId","descriptors","oti","maxBitrate","avgBitrate","complete","EBML_TAGS","EBML","DocType","Segment","SegmentInfo","Tracks","TrackNumber","DefaultDuration","TrackEntry","TrackType","FlagDefault","CodecID","CodecPrivate","Cluster","Timestamp","TimestampScale","BlockGroup","BlockDuration","Block","SimpleBlock","LENGTH_TABLE","getLength","removeLength","valueBytes","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","totalLength","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","positions","dataType","nalLimit","nalStart","nalsFound","nalOffset","findH264Nal","findH265Nal","CONSTANTS","_isLikely","docType","matroska","fmp4","ac3","avi","riff","isLikelyTypes","isLikelyFn","isLikely","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","atob","Buffer","decodeB64ToUint8Array","b64Text","decodedString"],"mappings":"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","file":"js/chunk-469aeb05.js","sourcesContent":["import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\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","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\ncreateXHR.httpHandler = require('./http-handler.js');\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\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\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\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\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\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n\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\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\n if (xhr.getAllResponseHeaders) {\n //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\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\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\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; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\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\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\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 && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\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\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","/**\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","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nexport default resolveUrl;","function _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 try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&lang=scss&\"","var getUint64 = require('../utils/numbers.js').getUint64;\n\nvar parseSidx = 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 },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = getUint64(data.subarray(i));\n result.firstOffset = getUint64(data.subarray(i + 8));\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; 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\n\nmodule.exports = parseSidx;\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\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","/**\n * Loops through all supported media groups in master and calls the provided\n * callback for each group\n *\n * @param {Object} master\n * The parsed master manifest object\n * @param {string[]} groups\n * The media groups to call the callback for\n * @param {Function} callback\n * Callback to call for each media group\n */\nexport var forEachMediaGroup = function forEachMediaGroup(master, groups, callback) {\n groups.forEach(function (mediaType) {\n for (var groupKey in master.mediaGroups[mediaType]) {\n for (var labelKey in master.mediaGroups[mediaType][groupKey]) {\n var mediaProperties = master.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};","/*! @name mpd-parser @version 0.22.1 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport { forEachMediaGroup } from '@videojs/vhs-utils/es/media-groups';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"0.22.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 if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n/**\n * Returns the first index that satisfies the matching function, or -1 if not found.\n *\n * Only necessary because of IE11 support.\n *\n * @param {Array} list - the list to search through\n * @param {Function} matchingFunction - the matching function\n *\n * @return {number} the matching index or -1 if not found\n */\n\nvar findIndex = function findIndex(list, matchingFunction) {\n for (var i = 0; i < list.length; i++) {\n if (matchingFunction(list[i])) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Returns a union of the included lists provided each element can be identified by a key.\n *\n * @param {Array} list - list of lists to get the union of\n * @param {Function} keyFunction - the function to use as a key for each element\n *\n * @return {Array} the union of the arrays\n */\n\nvar union = function union(lists, keyFunction) {\n return values(lists.reduce(function (acc, list) {\n list.forEach(function (el) {\n acc[keyFunction(el)] = el;\n });\n return acc;\n }, {}));\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n var startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n var endRange = window.BigInt ? window.BigInt(ranges[1]) : parseInt(ranges[1], 10); // convert back to a number if less than MAX_SAFE_INTEGER\n\n if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === 'bigint') {\n startRange = Number(startRange);\n }\n\n if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === 'bigint') {\n endRange = Number(endRange);\n }\n\n var length;\n\n if (typeof endRange === 'bigint' || typeof startRange === 'bigint') {\n length = window.BigInt(endRange) - window.BigInt(startRange) + window.BigInt(1);\n } else {\n length = endRange - startRange + 1;\n }\n\n if (typeof length === 'bigint' && length < Number.MAX_SAFE_INTEGER) {\n length = Number(length);\n } // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n\n segment.byterange = {\n length: length,\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;\n\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n endRange = window.BigInt(byterange.offset) + window.BigInt(byterange.length) - window.BigInt(1);\n } else {\n endRange = byterange.offset + byterange.length - 1;\n }\n\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nvar parseEndNumber = function parseEndNumber(endNumber) {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration,\n periodDuration = attributes.periodDuration;\n var endNumber = parseEndNumber(attributes.endNumber);\n var segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\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$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var endNumber = parseEndNumber(attributes.endNumber); // clientOffset is passed in at the top level of mpd-parser and is an offset calculated\n // after retrieving UTC server time.\n\n var now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n var periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodStart = attributes.periodStart,\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: periodStart,\n time: number * 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 type = attributes.type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n periodDuration = attributes.periodDuration,\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; // section is either a period or the full source\n\n var sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n periodStart = attributes.periodStart,\n presentationTime = attributes.presentationTime,\n _attributes$number = attributes.number,\n number = _attributes$number === void 0 ? 0 : _attributes$number,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = periodStart;\n } // If presentation time is provided, these segments are being generated by SIDX\n // references, and should use the time provided. For the general case of SegmentBase,\n // there should only be one segment in the period, so its presentation time is the same\n // as its period start.\n\n\n segment.presentationTime = presentationTime || periodStart;\n segment.number = number;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSidxSegmentsToPlaylist$1 = function addSidxSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main 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 = [];\n var type = playlist.endList ? 'static' : 'dynamic';\n var periodStart = playlist.sidx.timeline;\n var presentationTime = periodStart;\n var number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n var startIndex; // eslint-disable-next-line\n\n if (typeof sidx.firstOffset === 'bigint') {\n startIndex = window.BigInt(sidxEnd) + sidx.firstOffset;\n } else {\n startIndex = sidxEnd + sidx.firstOffset;\n }\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 = void 0; // eslint-disable-next-line\n\n if (typeof startIndex === 'bigint') {\n endIndex = startIndex + window.BigInt(size) - window.BigInt(1);\n } else {\n endIndex = startIndex + size - 1;\n }\n\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n periodStart: periodStart,\n presentationTime: presentationTime,\n number: number,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange,\n type: type\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n\n if (typeof startIndex === 'bigint') {\n startIndex += window.BigInt(size);\n } else {\n startIndex += size;\n }\n\n presentationTime += duration / timescale;\n number++;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nvar TIME_FUDGE = 1 / 60;\n/**\n * Given a list of timelineStarts, combines, dedupes, and sorts them.\n *\n * @param {TimelineStart[]} timelineStarts - list of timeline starts\n *\n * @return {TimelineStart[]} the combined and deduped timeline starts\n */\n\nvar getUniqueTimelineStarts = function getUniqueTimelineStarts(timelineStarts) {\n return union(timelineStarts, function (_ref) {\n var timeline = _ref.timeline;\n return timeline;\n }).sort(function (a, b) {\n return a.timeline > b.timeline ? 1 : -1;\n });\n};\n/**\n * Finds the playlist with the matching NAME attribute.\n *\n * @param {Array} playlists - playlists to search through\n * @param {string} name - the NAME attribute to search for\n *\n * @return {Object|null} the matching playlist object, or null\n */\n\nvar findPlaylistWithName = function findPlaylistWithName(playlists, name) {\n for (var i = 0; i < playlists.length; i++) {\n if (playlists[i].attributes.NAME === name) {\n return playlists[i];\n }\n }\n\n return null;\n};\n/**\n * Gets a flattened array of media group playlists.\n *\n * @param {Object} manifest - the main manifest object\n *\n * @return {Array} the media group playlists\n */\n\nvar getMediaGroupPlaylists = function getMediaGroupPlaylists(manifest) {\n var mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, function (properties, type, group, label) {\n mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);\n });\n return mediaGroupPlaylists;\n};\n/**\n * Updates the playlist's media sequence numbers.\n *\n * @param {Object} config - options object\n * @param {Object} config.playlist - the playlist to update\n * @param {number} config.mediaSequence - the mediaSequence number to start with\n */\n\nvar updateMediaSequenceForPlaylist = function updateMediaSequenceForPlaylist(_ref2) {\n var playlist = _ref2.playlist,\n mediaSequence = _ref2.mediaSequence;\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach(function (segment, index) {\n segment.number = playlist.mediaSequence + index;\n });\n};\n/**\n * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists\n * and a complete list of timeline starts.\n *\n * If no matching playlist is found, only the discontinuity sequence number of the playlist\n * will be updated.\n *\n * Since early available timelines are not supported, at least one segment must be present.\n *\n * @param {Object} config - options object\n * @param {Object[]} oldPlaylists - the old playlists to use as a reference\n * @param {Object[]} newPlaylists - the new playlists to update\n * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point\n */\n\nvar updateSequenceNumbers = function updateSequenceNumbers(_ref3) {\n var oldPlaylists = _ref3.oldPlaylists,\n newPlaylists = _ref3.newPlaylists,\n timelineStarts = _ref3.timelineStarts;\n newPlaylists.forEach(function (playlist) {\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref4) {\n var timeline = _ref4.timeline;\n return timeline === playlist.timeline;\n }); // Playlists NAMEs come from DASH Representation IDs, which are mandatory\n // (see ISO_23009-1-2012 5.3.5.2).\n //\n // If the same Representation existed in a prior Period, it will retain the same NAME.\n\n var oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);\n\n if (!oldPlaylist) {\n // Since this is a new playlist, the media sequence values can start from 0 without\n // consequence.\n return;\n } // TODO better support for live SIDX\n //\n // As of this writing, mpd-parser does not support multiperiod SIDX (in live or VOD).\n // This is evident by a playlist only having a single SIDX reference. In a multiperiod\n // playlist there would need to be multiple SIDX references. In addition, live SIDX is\n // not supported when the SIDX properties change on refreshes.\n //\n // In the future, if support needs to be added, the merging logic here can be called\n // after SIDX references are resolved. For now, exit early to prevent exceptions being\n // thrown due to undefined references.\n\n\n if (playlist.sidx) {\n return;\n } // Since we don't yet support early available timelines, we don't need to support\n // playlists with no segments.\n\n\n var firstNewSegment = playlist.segments[0];\n var oldMatchingSegmentIndex = findIndex(oldPlaylist.segments, function (oldSegment) {\n return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;\n }); // No matching segment from the old playlist means the entire playlist was refreshed.\n // In this case the media sequence should account for this update, and the new segments\n // should be marked as discontinuous from the prior content, since the last prior\n // timeline was removed.\n\n if (oldMatchingSegmentIndex === -1) {\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length\n });\n playlist.segments[0].discontinuity = true;\n playlist.discontinuityStarts.unshift(0); // No matching segment does not necessarily mean there's missing content.\n //\n // If the new playlist's timeline is the same as the last seen segment's timeline,\n // then a discontinuity can be added to identify that there's potentially missing\n // content. If there's no missing content, the discontinuity should still be rather\n // harmless. It's possible that if segment durations are accurate enough, that the\n // existence of a gap can be determined using the presentation times and durations,\n // but if the segment timing info is off, it may introduce more problems than simply\n // adding the discontinuity.\n //\n // If the new playlist's timeline is different from the last seen segment's timeline,\n // then a discontinuity can be added to identify that this is the first seen segment\n // of a new timeline. However, the logic at the start of this function that\n // determined the disconinuity sequence by timeline index is now off by one (the\n // discontinuity of the newest timeline hasn't yet fallen off the manifest...since\n // we added it), so the disconinuity sequence must be decremented.\n //\n // A period may also have a duration of zero, so the case of no segments is handled\n // here even though we don't yet support early available periods.\n\n if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {\n playlist.discontinuitySequence--;\n }\n\n return;\n } // If the first segment matched with a prior segment on a discontinuity (it's matching\n // on the first segment of a period), then the discontinuitySequence shouldn't be the\n // timeline's matching one, but instead should be the one prior, and the first segment\n // of the new manifest should be marked with a discontinuity.\n //\n // The reason for this special case is that discontinuity sequence shows how many\n // discontinuities have fallen off of the playlist, and discontinuities are marked on\n // the first segment of a new \"timeline.\" Because of this, while DASH will retain that\n // Period while the \"timeline\" exists, HLS keeps track of it via the discontinuity\n // sequence, and that first segment is an indicator, but can be removed before that\n // timeline is gone.\n\n\n var oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];\n\n if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {\n firstNewSegment.discontinuity = true;\n playlist.discontinuityStarts.unshift(0);\n playlist.discontinuitySequence--;\n }\n\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number\n });\n });\n};\n/**\n * Given an old parsed manifest object and a new parsed manifest object, updates the\n * sequence and timing values within the new manifest to ensure that it lines up with the\n * old.\n *\n * @param {Array} oldManifest - the old main manifest object\n * @param {Array} newManifest - the new main manifest object\n *\n * @return {Object} the updated new manifest object\n */\n\nvar positionManifestOnTimeline = function positionManifestOnTimeline(_ref5) {\n var oldManifest = _ref5.oldManifest,\n newManifest = _ref5.newManifest;\n // Starting from v4.1.2 of the IOP, section 4.4.3.3 states:\n //\n // \"MPD@availabilityStartTime and Period@start shall not be changed over MPD updates.\"\n //\n // This was added from https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/160\n //\n // Because of this change, and the difficulty of supporting periods with changing start\n // times, periods with changing start times are not supported. This makes the logic much\n // simpler, since periods with the same start time can be considerred the same period\n // across refreshes.\n //\n // To give an example as to the difficulty of handling periods where the start time may\n // change, if a single period manifest is refreshed with another manifest with a single\n // period, and both the start and end times are increased, then the only way to determine\n // if it's a new period or an old one that has changed is to look through the segments of\n // each playlist and determine the presentation time bounds to find a match. In addition,\n // if the period start changed to exceed the old period end, then there would be no\n // match, and it would not be possible to determine whether the refreshed period is a new\n // one or the old one.\n var oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n var newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest)); // Save all seen timelineStarts to the new manifest. Although this potentially means that\n // there's a \"memory leak\" in that it will never stop growing, in reality, only a couple\n // of properties are saved for each seen Period. Even long running live streams won't\n // generate too many Periods, unless the stream is watched for decades. In the future,\n // this can be optimized by mapping to discontinuity sequence numbers for each timeline,\n // but it may not become an issue, and the additional info can be useful for debugging.\n\n newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);\n updateSequenceNumbers({\n oldPlaylists: oldPlaylists,\n newPlaylists: newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nvar generateSidxKey = function generateSidxKey(sidx) {\n return sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || '');\n\n if (!acc[name]) {\n // First Period\n acc[name] = playlist;\n acc[name].attributes.timelineStarts = [];\n } else {\n // Subsequent Periods\n if (playlist.segments) {\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);\n } // 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 }\n\n acc[name].attributes.timelineStarts.push({\n // Although they represent the same number, it's important to have both to make it\n // compatible with HLS potentially having a similar attribute.\n start: playlist.attributes.periodStart,\n timeline: playlist.attributes.periodStart\n });\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nvar addSidxSegmentsToPlaylist = function addSidxSegmentsToPlaylist(playlist, sidxMapping) {\n var sidxKey = generateSidxKey(playlist.sidx);\n var sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nvar addSidxSegmentsToPlaylists = function addSidxSegmentsToPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref, isAudioOnly) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx,\n mediaSequence = _ref.mediaSequence,\n discontinuitySequence = _ref.discontinuitySequence,\n discontinuityStarts = _ref.discontinuityStarts;\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',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuitySequence: discontinuitySequence,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence: mediaSequence,\n segments: segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _m3u8Attributes;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments,\n mediaSequence = _ref2.mediaSequence,\n discontinuityStarts = _ref2.discontinuityStarts,\n discontinuitySequence = _ref2.discontinuitySequence;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n var m3u8Attributes = (_m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _m3u8Attributes['PROGRAM-ID'] = 1, _m3u8Attributes);\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n return {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n timelineStarts: attributes.timelineStarts,\n discontinuityStarts: discontinuityStarts,\n discontinuitySequence: discontinuitySequence,\n mediaSequence: mediaSequence,\n segments: segments\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping, isAudioOnly) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (isAudioOnly === void 0) {\n isAudioOnly = false;\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n }\n\n if (!a[label]) {\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n var formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nvar organizeCaptionServices = function organizeCaptionServices(captionServices) {\n return captionServices.reduce(function (svcObj, svc) {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(function (service) {\n var channel = service.channel,\n language = service.language;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language: language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n }, {});\n};\n\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes2;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx,\n discontinuityStarts = _ref3.discontinuityStarts;\n var playlist = {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n segments: segments\n };\n\n if (attributes.frameRate) {\n playlist.attributes['FRAME-RATE'] = attributes.frameRate;\n }\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nvar videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n};\n\nvar audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n};\n\nvar vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n};\n/**\n * Contains start and timeline properties denoting a timeline start. For DASH, these will\n * be the same number.\n *\n * @typedef {Object} TimelineStart\n * @property {number} start - the start time of the timeline\n * @property {number} timeline - the timeline number\n */\n\n/**\n * Adds appropriate media and discontinuity sequence values to the segments and playlists.\n *\n * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a\n * DASH specific attribute used in constructing segment URI's from templates. However, from\n * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`\n * value, which should start at the original media sequence value (or 0) and increment by 1\n * for each segment thereafter. Since DASH's `startNumber` values are independent per\n * period, it doesn't make sense to use it for `number`. Instead, assume everything starts\n * from a 0 mediaSequence value and increment from there.\n *\n * Note that VHS currently doesn't use the `number` property, but it can be helpful for\n * debugging and making sense of the manifest.\n *\n * For live playlists, to account for values increasing in manifests when periods are\n * removed on refreshes, merging logic should be used to update the numbers to their\n * appropriate values (to ensure they're sequential and increasing).\n *\n * @param {Object[]} playlists - the playlists to update\n * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest\n */\n\n\nvar addMediaSequenceValues = function addMediaSequenceValues(playlists, timelineStarts) {\n // increment all segments sequentially\n playlists.forEach(function (playlist) {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref7) {\n var timeline = _ref7.timeline;\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach(function (segment, index) {\n segment.number = index;\n });\n });\n};\n/**\n * Given a media group object, flattens all playlists within the media group into a single\n * array.\n *\n * @param {Object} mediaGroupObject - the media group object\n *\n * @return {Object[]}\n * The media group playlists\n */\n\nvar flattenMediaGroupPlaylists = function flattenMediaGroupPlaylists(mediaGroupObject) {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce(function (acc, label) {\n var labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nvar toM3u8 = function toM3u8(_ref8) {\n var _mediaGroups;\n\n var dashPlaylists = _ref8.dashPlaylists,\n locations = _ref8.locations,\n _ref8$sidxMapping = _ref8.sidxMapping,\n sidxMapping = _ref8$sidxMapping === void 0 ? {} : _ref8$sidxMapping,\n previousManifest = _ref8.previousManifest;\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n type = _dashPlaylists$0$attr.type,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n minimumUpdatePeriod = _dashPlaylists$0$attr.minimumUpdatePeriod;\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n var captions = dashPlaylists.map(function (playlist) {\n return playlist.attributes.captionServices;\n }).filter(Boolean);\n var manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n var isAudioOnly = manifest.playlists.length === 0;\n var organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n var organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n var formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n var playlistTimelineStarts = formattedPlaylists.map(function (_ref9) {\n var timelineStarts = _ref9.timelineStarts;\n return timelineStarts;\n });\n manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);\n addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);\n\n if (organizedAudioGroup) {\n manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;\n }\n\n if (organizedVttGroup) {\n manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n if (previousManifest) {\n return positionManifestOnTimeline({\n oldManifest: previousManifest,\n newManifest: manifest\n });\n }\n\n return manifest;\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$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + periodStart;\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 type = 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.periodStart;\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.periodStart\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); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n var presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n var map = {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime: presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr,\n periodStart = attributes.periodStart; // 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]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\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.segmentTimeline); // 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\n/**\n * Converts the provided string that may contain a division operation to a number.\n *\n * @param {string} value - the provided string value\n *\n * @return {number} the parsed string value\n */\nvar parseDivisionValue = function parseDivisionValue(value) {\n return parseFloat(value.split('/').reduce(function (prev, current) {\n return prev / current;\n }));\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the frame rate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed frame rate\n */\n frameRate: function frameRate(value) {\n return parseDivisionValue(value);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset: function presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\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 segmentTimeline: 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); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated\n // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system\n // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do\n // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one).\n\n if (attributes.schemeIdUri) {\n attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();\n }\n\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 acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nvar parseCaptionServiceMetadata = function parseCaptionServiceMetadata(service) {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n var values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(function (value) {\n var channel;\n var language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n var _value$split = value.split('=');\n\n channel = _value$split[0];\n language = _value$split[1];\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel: channel,\n language: language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n var _values = typeof service.value !== 'string' ? [] : service.value.split(';');\n\n return _values.map(function (value) {\n var flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n var _value$split2 = value.split('='),\n channel = _value$split2[0],\n _value$split2$ = _value$split2[1],\n opts = _value$split2$ === void 0 ? '' : _value$split2$;\n\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(function (opt) {\n var _opt$split = opt.split(':'),\n name = _opt$split[0],\n val = _opt$split[1];\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n var captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices: captionServices\n });\n }\n\n var label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n var labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodStart\n * Start time 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.node, 'BaseURL'));\n var periodAttributes = merge(mpdAttributes, {\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n var adaptationSets = findChildren(period.node, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nvar getPeriodStart = function getPeriodStart(_ref) {\n var attributes = _ref.attributes,\n priorPeriodAttributes = _ref.priorPeriodAttributes,\n mpdType = _ref.mpdType;\n\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\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 periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var locations = findChildren(mpd, 'Location');\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL')); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n var periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach(function (node, index) {\n var attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n var priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes: attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node: node,\n attributes: attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)))\n };\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml;\n var mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throwsw on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n/*\n * Given a DASH manifest string and options, parses the DASH manifest into an object in the\n * form outputed by m3u8-parser and accepted by videojs/http-streaming.\n *\n * For live DASH manifests, if `previousManifest` is provided in options, then the newly\n * parsed DASH manifest will have its media sequence and discontinuity sequence values\n * updated to reflect its position relative to the prior manifest.\n *\n * @param {string} manifestString - the DASH manifest as a string\n * @param {options} [options] - any options\n *\n * @return {Object} the manifest object\n */\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n var playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest\n });\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","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","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var MAX_UINT32 = Math.pow(2, 32);\n\nvar getUint64 = function(uint8) {\n var dv = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);\n var value;\n\n if (dv.getBigUint64) {\n value = dv.getBigUint64(0);\n\n if (value < Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n\n return value;\n }\n\n return (dv.getUint32(0) * MAX_UINT32) + dv.getUint32(4);\n};\n\nmodule.exports = {\n getUint64: getUint64,\n MAX_UINT32: MAX_UINT32\n};\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 \"center\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1,\n \"auto\": 1,\n \"line-left\": 1,\n \"line-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 = \"auto\";\n var _positionAlign = \"auto\";\n var _size = 100;\n var _align = \"center\";\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(\"Vertical: an invalid or illegal direction 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(\"Line: 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 console.warn(\"lineAlign: an invalid or illegal string was specified.\");\n } else {\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\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 console.warn(\"positionAlign: an invalid or illegal string was specified.\");\n } else {\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\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(\"align: an invalid or illegal alignment 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","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _construct.apply(null, arguments);\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","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","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 document = require('global/document');\n\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{1,2})(:\\d{1,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].trim();\n var v = kv[1].trim();\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\", \"center\", \"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\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"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 try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\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\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\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\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\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 function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\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 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 var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\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 instead of center on Safari.\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 case \"line-left\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n case \"line-right\":\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 \"center\":\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 // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\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.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\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","// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\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(\n basePartsForNormalise.path\n );\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 =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : 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 (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (typeof exports === 'object' && typeof module === 'object')\n module.exports = URLToolkit;\n else if (typeof define === 'function' && define.amd)\n define([], function () {\n return URLToolkit;\n });\n else if (typeof exports === 'object') exports['URLToolkit'] = URLToolkit;\n else root['URLToolkit'] = URLToolkit;\n})(this);\n","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","/*! @name m3u8-parser @version 4.8.0 @license Apache-2.0 */\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(Stream);\n\nvar TAB = String.fromCharCode(0x09);\n\nvar parseByterange = function parseByterange(byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n var match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n var result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n var subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(Stream);\n\nvar camelCase = function camelCase(str) {\n return str.toLowerCase().replace(/-(\\w)/g, function (a) {\n return a[1].toUpperCase();\n });\n};\n\nvar camelCaseKeys = function camelCaseKeys(attributes) {\n var result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nvar setHoldBack = function setHoldBack(manifest) {\n var serverControl = manifest.serverControl,\n targetDuration = manifest.targetDuration,\n partTargetDuration = manifest.partTargetDuration;\n\n if (!serverControl) {\n return;\n }\n\n var tag = '#EXT-X-SERVER-CONTROL';\n var hb = 'holdBack';\n var phb = 'partHoldBack';\n var minTargetDuration = targetDuration && targetDuration * 3;\n var minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: tag + \" defaulting HOLD-BACK to targetDuration * 3 (\" + minTargetDuration + \").\"\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: tag + \" clamping HOLD-BACK (\" + serverControl[hb] + \") to targetDuration * 3 (\" + minTargetDuration + \")\"\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: tag + \" defaulting PART-HOLD-BACK to partTargetDuration * 3 (\" + serverControl[phb] + \").\"\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: tag + \" clamping PART-HOLD-BACK (\" + serverControl[phb] + \") to partTargetDuration * 2 (\" + minPartDuration + \").\"\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new LineStream();\n _this.parseStream = new ParseStream();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var hasParts = false;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n var lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n var lastPartByterangeEnd = 0;\n\n _this.on('end', function () {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && _key) {\n currentUri.key = _key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n _this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n version: function version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.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 = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (_key) {\n currentMap.key = _key;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n },\n 'skip': function skip() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n 'part': function part() {\n var _this2 = this;\n\n hasParts = true; // parts are always specifed before a segment\n\n var segmentIndex = this.manifest.segments.length;\n var part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n var partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PART #\" + partIndex + \" for segment #\" + segmentIndex, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach(function (r, i) {\n if (!r.hasOwnProperty('lastPart')) {\n _this2.trigger('warn', {\n message: \"#EXT-X-RENDITION-REPORT #\" + i + \" lacks required attribute(s): LAST-PART\"\n });\n }\n });\n }\n },\n 'server-control': function serverControl() {\n var attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n 'preload-hint': function preloadHint() {\n // parts are always specifed before a segment\n var segmentIndex = this.manifest.segments.length;\n var hint = camelCaseKeys(entry.attributes);\n var isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n var index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (var i = 0; i < currentUri.preloadHints.length - 1; i++) {\n var otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: \"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex + \" has the same TYPE \" + hint.type + \" as preload hint #\" + i\n });\n }\n }\n },\n 'rendition-report': function renditionReport() {\n var report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n var index = this.manifest.renditionReports.length - 1;\n var required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(\"#EXT-X-RENDITION-REPORT #\" + index, entry.attributes, required);\n },\n 'part-inf': function partInf() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // prepare for the next URI\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n\n var _proto = Parser.prototype;\n\n _proto.warnOnMissingAttributes_ = function warnOnMissingAttributes_(identifier, attributes, required) {\n var missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: identifier + \" lacks required attribute(s): \" + missing.join(', ')\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n ;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(Stream);\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","// 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","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i {\r\n if (this.url) this.getPlayer()\r\n })\r\n },\r\n },\r\n beforeMount() {\r\n if (this.poster) this.options.poster = this.poster\r\n },\r\n mounted() {\r\n try {\r\n //load custom language data\r\n //require(`imports-loader?videojs=video.js!video.js/dist/lang/${this.language}`)\r\n /* eslint-disable */\r\n } catch (e) {}\r\n\r\n this.play()\r\n },\r\n beforeDestroy() {\r\n videojs('videoPlayerContainer').dispose()\r\n },\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=4696ff38&\"\nimport script from \"./main.vue?vue&type=script&lang=js&\"\nexport * from \"./main.vue?vue&type=script&lang=js&\"\nimport style0 from \"./main.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","/**\n * @license\n * Video.js 7.21.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 _extends from '@babel/runtime/helpers/extends';\nimport keycode from 'keycode';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _construct from '@babel/runtime/helpers/construct';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { browserSupportsCodec, DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, muxerSupportsCodec, parseCodecs, translateLegacyCodec, codecsFromDefault, getMimeForCodec, isAudioCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { isArrayBufferView, concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\nimport _wrapNativeSuper from '@babel/runtime/helpers/wrapNativeSuper';\n\nvar version$5 = \"7.21.5\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nvar hooks_ = {};\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecyle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\n\nvar hooks = function hooks(type, fn) {\n hooks_[type] = hooks_[type] || [];\n\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n\n return hooks_[type];\n};\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hook = function hook(type, fn) {\n hooks(type, fn);\n};\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\n\n\nvar removeHook = function removeHook(type, fn) {\n var index = hooks(type).indexOf(fn);\n\n if (index <= -1) {\n return false;\n }\n\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hookOnce = function hookOnce(type, fn) {\n hooks(type, [].concat(fn).map(function (original) {\n var wrapper = function wrapper() {\n removeHook(type, wrapper);\n return original.apply(void 0, arguments);\n };\n\n return wrapper;\n }));\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 create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window$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$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log$1 = createLogger$1('VIDEOJS');\nvar createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends.apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window$1.getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window$1.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window$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 iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch));\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document === window$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$1.warn('Setting attributes in the second argument of createEl()\\n' + 'has been deprecated. Use the third argument instead.\\n' + (\"createEl(type, properties, attributes). Attempting to set \" + propName + \" to \" + val + \".\"));\n el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log$1.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document.body.focus();\n\n document.onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var left = 0;\n var top = 0;\n\n while (el.offsetParent && el !== document[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top,\n width: width,\n height: height\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var translated = {\n x: 0,\n y: 0\n };\n\n if (IS_IOS) {\n var item = el;\n\n while (item && item.nodeName.toLowerCase() !== 'html') {\n var transform = computedStyle(item, 'transform');\n\n if (/^matrix/.test(transform)) {\n var values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n var _values = transform.slice(9, -1).split(/,\\s/).map(Number);\n\n translated.x += _values[12];\n translated.y += _values[13];\n }\n\n item = item.parentNode;\n }\n }\n\n var position = {};\n var boxTarget = findPosition(event.target);\n var box = findPosition(el);\n var boxW = box.width;\n var boxH = box.height;\n var offsetY = event.offsetY - (box.top - boxTarget.top);\n var offsetX = event.offsetX - (box.left - boxTarget.left);\n\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$1;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n\n if (vjs) {\n videojs$1 = vjs;\n }\n\n window$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 guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window$1.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window$1.performance && window$1.performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log$1('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\n\n\nvar DomData = window$1.WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\n\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n\n\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\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 // Lighthouse complains if Event.path is copied\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY' && key !== 'path') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document;\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n } // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window$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$2 = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget$2.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget$2.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget$2.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget$2.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget$2.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget$2.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget$2.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window$1.clearTimeout(oldTimeout);\n var timeout = window$1.setTimeout(function () {\n map[\"delete\"](type); // if we cleared out all timeouts for the current target, delete its map\n\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n\nvar objName = function objName(obj) {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n\n if (obj.name_) {\n return obj.name_;\n }\n\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n\n return typeof obj;\n};\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateTarget = function validateTarget(target, obj, fnName) {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(\"Invalid target for \" + objName(obj) + \"#\" + fnName + \"; must be a DOM node or evented object.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateEventType = function validateEventType(type, obj, fnName) {\n if (!isValidEventType(type)) {\n throw new Error(\"Invalid event type for \" + objName(obj) + \"#\" + fnName + \"; must be a non-empty string or array.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateListener = function validateListener(listener, obj, fnName) {\n if (typeof listener !== 'function') {\n throw new Error(\"Invalid listener for \" + objName(obj) + \"#\" + fnName + \"; must be a function.\");\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args, fnName) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target, target, method);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args, 'on'),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args, 'one'),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args, 'any'),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off'); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n var type = event && typeof event !== 'string' ? event.type : event;\n\n if (!isValidEventType(type)) {\n var error = \"Invalid event type for \" + objName(this) + \"#trigger; \" + 'must be a non-empty string or object with a type key that has a non-empty value.';\n\n if (event) {\n (this.log || log$1).error(error);\n } else {\n throw new Error(error);\n }\n }\n\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData[\"delete\"](val);\n }\n });\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$1 = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions$3() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions$3(result[key], value);\n });\n });\n return result;\n}\n\nvar MapSham = /*#__PURE__*/function () {\n function MapSham() {\n this.map_ = {};\n }\n\n var _proto = MapSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.map_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.map_[key];\n return has;\n };\n\n _proto.set = function set(key, value) {\n this.map_[key] = value;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.map_) {\n callback.call(thisArg, this.map_[key], key, this);\n }\n };\n\n return MapSham;\n}();\n\nvar Map$1 = window$1.Map ? window$1.Map : MapSham;\n\nvar SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto = SetSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.set_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n}();\n\nvar Set$1 = window$1.Set ? window$1.Set : SetSham;\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component$1 = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of component 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 {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n var _this = this;\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions$3({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions$3(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n if (options.className && this.el_) {\n options.className.split(' ').forEach(function (c) {\n return _this.addClass(c);\n });\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set$1();\n this.setIntervalIds_ = new Set$1();\n this.rafIds_ = new Set$1();\n this.namedRafs_ = new Map$1();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n } // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n\n\n this.ready(ready);\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n *\n * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose(options) {\n if (options === void 0) {\n options = {};\n }\n\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions$3(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Handles language change for the player in components. Should be overriden by sub-components.\n *\n * @abstract\n */\n ;\n\n _proto.handleLanguagechange = function handleLanguagechange() {}\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase$1(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this2 = 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 = _this2.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 = _this2.addChild(name, opts);\n\n if (newChild) {\n _this2[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] || _this2.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n } // Check if using css width/height (% or px) and adjust\n\n\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n } // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n\n\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase$1(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser. Exclude Tab for focus trapping.\n if (!keycode.isEventKey(event, 'Tab')) {\n event.stopPropagation();\n }\n\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 _this3 = 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 (_this3.setTimeoutIds_.has(timeoutId)) {\n _this3.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 _this4 = 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 (_this4.rafIds_.has(id)) {\n _this4.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n ;\n\n _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) {\n var _this5 = this;\n\n if (this.namedRafs_.has(name)) {\n return;\n }\n\n this.clearTimersOnDispose_();\n fn = bind(this, fn);\n var id = this.requestAnimationFrame(function () {\n fn();\n\n if (_this5.namedRafs_.has(name)) {\n _this5.namedRafs_[\"delete\"](name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n ;\n\n _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_[\"delete\"](name);\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window$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 _this6 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n _this6[idName].forEach(function (val, key) {\n return _this6[cancelName](key);\n });\n });\n _this6.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase$1(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent$1.prototype.supportsRaf_ = typeof window$1.requestAnimationFrame === 'function' && typeof window$1.cancelAnimationFrame === 'function';\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\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 */\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 var timeRangesObj;\n\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\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 } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n\n if (window$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.Symbol.iterator] = function () {\n return (ranges || []).values();\n };\n }\n\n return timeRangesObj;\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n\n _this.handleKeyDown_ = function (e) {\n return _this.handleKeyDown(e);\n };\n\n _this.close_ = function (e) {\n return _this.close(e);\n };\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown_); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown_);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode.isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode.isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window$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$1);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n\n track.labelchange_ = function () {\n _this2.trigger({\n track: track,\n type: 'labelchange',\n target: _this2\n });\n };\n\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget$2);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n var label = options.label || '';\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized(_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'label', {\n get: function get() {\n return label;\n },\n set: function set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('labelchange');\n }\n }\n });\n return _this;\n }\n\n return Track;\n}(EventTarget$2);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n // This entire method can be replace with URL once we are able to drop IE11\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; // Copy the specific URL properties to a new object\n // This is also needed for IE because the anchor loses its\n // properties when it's removed from the dom\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE 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 /* istanbul ignore if */\n\n\n if (!details.host) {\n details.host = window$1.location.host;\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 // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n a.href = url;\n url = a.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window$1.location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window$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$1.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 var withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n\n XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window$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$1.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions$3(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n _this.timeupdateHandler = bind(_assertThisInitialized(_this), function (event) {\n if (event === void 0) {\n event = {};\n }\n\n if (this.tech_.isDisposed()) {\n return;\n }\n\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n\n return;\n } // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n\n\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.stopTracking();\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.startTracking();\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n if (mode === newMode) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n this.stopTracking();\n\n if (mode !== 'disabled') {\n this.startTracking();\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized(_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n\n var _proto = TextTrack.prototype;\n\n _proto.startTracking = function startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler); // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n\n this.tech_.on('timeupdate', this.timeupdateHandler);\n };\n\n _proto.stopTracking = function stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n\n this.tech_.off('timeupdate', this.timeupdateHandler);\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 _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (cue.constructor && cue.constructor.name !== '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 = /*#__PURE__*/function (_Track) {\n _inheritsLoose(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * 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 HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized(_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget$2);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this;\n\n _this.onDurationChange_ = function (e) {\n return _this.onDurationChange(e);\n };\n\n _this.trackProgress_ = function (e) {\n return _this.trackProgress(e);\n };\n\n _this.trackCurrentTime_ = function (e) {\n return _this.trackCurrentTime(e);\n };\n\n _this.stopTrackingCurrentTime_ = function (e) {\n return _this.stopTrackingCurrentTime(e);\n };\n\n _this.disposeSourceHandler_ = function (e) {\n return _this.disposeSourceHandler(e);\n };\n\n _this.queuedHanders_ = new Set(); // 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/tech doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/tech doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n ;\n\n _proto.crossOrigin = function crossOrigin() {}\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n ;\n\n _proto.setCrossOrigin = function setCrossOrigin() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n ;\n\n _proto.play = function play() {}\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#setScrubbing}\n */\n ;\n\n _proto.setScrubbing = function setScrubbing() {}\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n ;\n\n _proto.scrubbing = function scrubbing() {}\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window$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$3(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log$1.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window$1.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'