{"version":3,"sources":["webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/base64-js/index.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/m3u8-parser/node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","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/ieee754/index.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/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/buffer/index.js","webpack:///./src/components/DestinationVideo.vue?55e5","webpack:///./node_modules/global/window.js","webpack:///./node_modules/@videojs/xhr/lib/interceptors.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./src/components/DestinationVideo.vue","webpack:///src/components/DestinationVideo.vue","webpack:///./src/components/DestinationVideo.vue?586b","webpack:///./src/components/DestinationVideo.vue?7106","webpack:///./node_modules/m3u8-parser/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/@xmldom/xmldom/lib/sax.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/@videojs/xhr/lib/retry.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","exports","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","len","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","join","extraBytes","parts","maxChunkLength","len2","dom","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","InterceptorsStorage","RetryManager","createXHR","httpHandler","requestInterceptorsStorage","responseInterceptorsStorage","retryManager","parseHeaders","headers","row","index","key","value","isArray","forEachArray","array","iterator","isEmpty","obj","hasOwnProperty","initParams","uri","options","callback","params","_createXHR","requestType","getIsEnabled","requestInterceptorPayload","url","body","metadata","retry","timeout","updatedPayload","execute","called","err","response","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","undefined","responseText","getXml","isJson","JSON","parse","e","errorFunc","evt","clearTimeout","timeoutTimer","retryTimeout","statusCode","aborted","shouldRetry","responseInterceptorPayload","failureResponse","responseUrl","responseURL","responseType","_updatedPayload","moveToNextAttempt","getCurrentFuzzedDelay","status","useXDR","method","rawRequest","getAllResponseHeaders","_updatedPayload2","cors","XDomainRequest","XMLHttpRequest","data","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","abort","setRequestHeader","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","toUpperCase","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","atob","s","Buffer","from","decodeB64ToUint8Array","b64Text","decodedString","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","getUint64","parseSidx","view","DataView","buffer","byteOffset","version","subarray","references","referenceId","getUint32","timescale","earliestPresentationTime","firstOffset","referenceCount","getUint16","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","Object","prototype","fn","string","call","alert","confirm","prompt","forEachMediaGroup","groups","groupKey","labelKey","mediaProperties","isObject","merge","objects","reduce","source","keys","concat","values","o","k","flatten","lists","x","y","list","findIndexes","l","a","union","keyFunction","acc","el","errors","INVALID_NUMBER_OF_PERIOD","INVALID_NUMBER_OF_CONTENT_STEERING","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","urlTypeToSegment","range","indexRange","segment","resolvedUri","rangeStr","ranges","startRange","BigInt","parseInt","endRange","MAX_SAFE_INTEGER","byterange","byteRangeToString","parseEndNumber","endNumber","isNaN","segmentRange","duration","sourceDuration","periodDuration","segmentDuration","NOW","clientOffset","availabilityStartTime","periodStart","minimumUpdatePeriod","timeShiftBufferDepth","Infinity","now","periodStartWC","periodEndWC","segmentCount","Math","ceil","availableStart","floor","availableEnd","max","min","toSegments","number","startNumber","timeline","time","parseByDuration","segments","sectionDuration","segmentsFromBase","initialization","presentationTime","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","playlist","sidx","sidxByteRange","sidxEnd","mediaReferences","filter","r","endList","startIndex","mediaSequence","reference","size","endIndex","SUPPORTED_MEDIA_TYPES","TIME_FUDGE","getUniqueTimelineStarts","timelineStarts","sort","b","findPlaylistWithName","NAME","getMediaGroupPlaylists","manifest","mediaGroupPlaylists","properties","group","label","updateMediaSequenceForPlaylist","updateSequenceNumbers","oldPlaylists","newPlaylists","discontinuitySequence","findIndex","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","abs","discontinuity","discontinuityStarts","unshift","oldMatchingSegment","positionManifestOnTimeline","oldManifest","newManifest","generateSidxKey","mergeDiscontiguousPlaylists","playlistsByBaseUrl","cur","allPlaylists","playlistGroup","mergedPlaylists","id","lang","contentProtection","addSidxSegmentsToPlaylist","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","BANDWIDTH","bandwidth","targetDuration","serviceLocation","SUBTITLES","formatVttPlaylist","m3u8Attributes","vttPlaylist","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","language","roleLabel","autoselect","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","channel","instreamId","aspectRatio","easyReader","formatVideoPlaylist","RESOLUTION","width","height","frameRate","videoOnly","mimeType","contentType","audioOnly","vttOnly","addMediaSequenceValues","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","dashPlaylists","locations","contentSteering","previousManifest","eventStream","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","Boolean","allowCache","VIDEO","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","subs","cc","getLiveRValue","parseByTimeline","segmentTimeline","media","sIndex","S","d","repeat","segmentTime","t","count","nextS","identifierPattern","identifierReplacement","identifier","format","constructTemplateUrl","parseTemplateInfo","segmentsFromTemplate","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentInfo","segmentAttributes","segmentsFn","template","base","segmentsInfo","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","year","month","day","hour","minute","second","parseDate","dateRegex","Date","parsers","parsedValue","parseAttributes","parseFn","DEFAULT","keySystemsMap","buildBaseUrls","baseUrlElements","baseUrlElement","initialBaseUrl","resolvedBaseUrl","finalBaseUrl","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","tag","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","generateKeySystemInformation","contentProtectionNodes","node","schemeIdUri","keySystem","psshNode","pssh","parseCaptionServiceMetadata","opts","opt","val","toEventStream","period","eventStreamAttributes","event","eventAttributes","messageData","contentEncoding","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","attrs","accessibility","labelVal","nodeValue","toAdaptationSets","mpdAttributes","mpdBaseUrls","adaptationSets","generateContentSteeringInformation","contentSteeringNodes","eventHandler","message","infoFromContentSteeringTag","serverURL","queryBeforeStart","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","manifestUri","periodNodes","mediaPresentationDuration","periods","priorPeriod","contentSteeringInfo","representationInfo","stringToMpdXml","manifestString","parser","xml","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","apply","contentTypeHeader","_contentType$split","SafeParseTuple","reviver","error","read","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","NaN","pow","write","rt","log","LN2","bind","n","arguments","__esModule","MAX_UINT32","dv","getBigUint64","autoKeyword","directionSetting","alignSetting","findDirectionSetting","dir","findAlignSetting","align","startTime","endTime","this","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","defineProperties","enumerable","get","set","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","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","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","Map","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","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","base64","ieee754","typedArraySupport","__proto__","foo","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","alloc","fill","encoding","checked","isEncoding","actual","fromArrayLike","isBuffer","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","global","poolSize","_augment","Symbol","species","defineProperty","configurable","allocUnsafeSlow","_isBuffer","compare","pos","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","src","dst","win","self","_createForOfIteratorHelperLoose","allowArrayLike","next","_unsupportedIterableToArray","done","minLen","_arrayLikeToArray","constructor","arr2","typeToInterceptorsMap_","enabled_","_proto","enable","disable","reset","addInterceptor","interceptor","has","Set","interceptorsSet","add","removeInterceptor","delete","clearInterceptorsByType","clear","getForType","payload","_step","interceptors","_iterator","document","_objCreate","create","F","ParsingError","errorData","parseTimeStamp","computeSeconds","h","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","TEXTAREA_ELEMENT","createElement","TAG_NAME","u","ruby","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","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","p","intersectPercentage","boxPosition","linePos","step","round","maxPosition","initialAxis","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","intersectArea","getSimpleBoxPosition","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","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","render","_vm","_c","_self","staticClass","directives","rawName","isShowVideo","expression","coverUrl","isAndroid","shorexBannerIndex","videoUrl","on","handleFullscreenChange","$event","stopPropagation","onChangeVideoPlay","staticRenderFns","props","videoId","isFullscreen","videoPlayer","videoPlayerAndroid","mounted","navigator","userAgent","videoInit","watch","methods","videojs","controls","autoplay","preload","controlBar","playToggle","isFullscreen_","pause","currentTime","setAttribute","onChangeVideoEmit","play","exitFullscreen","enterFullscreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","getElementById","fullScreen","$emit","component","Stream","listeners","listener","off","splice","trigger","callbacks","args","_length","_i","dispose","pipe","destination","super","nextNewline","TAB","parseByterange","byterangeString","attributeSeparator","keyvalue","RegExp","customParsers","tagMappers","newLines","mapper","mappedLine","newLine","tagType","title","playlistType","allowed","URI","BYTERANGE","resolution","dateTimeString","dateTimeObject","IV","Uint32Array","PRECISE","subkey","clientAttributePattern","isHexaDecimal","isDecimalFloating","customType","dataParser","mapFn","camelCase","camelCaseKeys","setHoldBack","serverControl","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","lineStream","parseStream","lastProgramDateTime","uris","currentMap","currentUri","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","dateRanges","lastByterangeEnd","lastPartByterangeEnd","dateRangeTags","preloadHints","preloadSegment","entry","mediaGroup","rendition","METHOD","KEYFORMAT","VALID_METHODS","KEYID","keyId","iv","TYPE","mediaGroupType","AUTOSELECT","LANGUAGE","CHARACTERISTICS","characteristics","FORCED","forced","getTime","reduceRight","programDateTime","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","partIndex","renditionReports","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","dateRange","endDate","startDate","plannedDuration","endOnNextYes","endOnNext","class","newDateInSeconds","attribute","dateRangeWithSameId","dateRangeToFind","independentSegments","custom","missing","chunk","addParser","addTagMapper","countBits","countBytes","padStart","isArrayBufferView","isTypedArray","toUint8","toHexString","toBinaryString","BYTE_TABLE","bytesToNumber","Uint16Array","_temp","_ref","_ref$signed","signed","_ref$le","total","byte","exponent","numberToBytes","_temp2","_ref2","_ref2$le","byteCount","byteIndex","bytesToString","escape","stringToBytes","stringIsBytes","concatTypedArrays","_len","buffers","_key","totalLen","tempBuffer","bytesMatch","_temp3","_ref3","_ref3$offset","_ref3$mask","mask","bByte","aByte","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","matchs","pubid","sysid","lastMatch","endDTD","lastIndex","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","dest","Class","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","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","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","getTextContent","maxAttempts_","delayFactor_","fuzzFactor_","initialDelay_","getMaxAttempts","setMaxAttempts","maxAttempts","getDelayFactor","setDelayFactor","delayFactor","getFuzzFactor","setFuzzFactor","fuzzFactor","getInitialDelay","setInitialDelay","initialDelay","createRetry","Retry","currentDelay_","currentAttempt_","_proto2","delayDelta","getCurrentDelay","getCurrentMinPossibleDelay","getCurrentMaxPossibleDelay","lowValue","highValue","random","doccy","minDoc","topLevel","version$6","hooks_","hooks","hook","removeHook","hookOnce","original","wrapper","FullscreenApi","prefixed","apiMap","specApi","browserApi","history","LogByTypeFactory","level","lvl","levels","lvlRegExp","resultName","info","createLogger$1","delimiter","logByType","createLogger","subName","subDelimiter","subStyles","resultDelimiter","resultStyles","createNewLogger","newName","newDelimiter","newStyles","all","debug","fname","historyItem","log$1","each","initial","accum","isPlain","merge$1","sources","defineLazyProperty","setter","writable","Obj","ANDROID_VERSION","IS_IPOD","IOS_VERSION","IS_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROMIUM","IS_CHROME","CHROMIUM_VERSION","CHROME_VERSION","IS_CHROMECAST_RECEIVER","cast","framework","CastReceiverContext","IE_VERSION","IS_SAFARI","IS_WINDOWS","IS_IPAD","IS_IPHONE","IS_TIZEN","IS_WEBOS","IS_SMART_TV","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","UAD","userAgentData","platform","brands","brand","USER_AGENT","major","minor","IS_IOS","IS_ANY_SAFARI","browser","isNonBlankString","throwIfWhitespace","isEl","isInFrame","createQuerier","selector","context","querySelector","ctx","createEl","content","getOwnPropertyNames","appendContent","prependTo","hasClass","classToCheck","classList","contains","addClass","classesToAdd","removeClass","classesToRemove","toggleClass","classToToggle","toggle","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","blockTextSelection","focus","onselectstart","unblockTextSelection","computedStyle","findPosition","offsetParent","offsetLeft","getPointerPosition","translated","transform","assignedSlot","parentElement","WebKitCSSMatrix","transformValue","getComputedStyle","matrix","m41","m42","host","boxTarget","boxW","offsetY","offsetX","changedTouches","pageX","pageY","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","$","$$","computedStyleValue","getPropertyValue","copyStyleSheetsToWindow","styleSheets","styleSheet","cssRules","rule","cssText","head","link","rel","mediaText","Dom","videojs$1","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","createStyleElement","setTextContent","DomData","WeakMap","_initialGuid","_supportsPassive","_guid","newGUID","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","deprecatedProps","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","cancelBubble","stopImmediatePropagation","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","which","keyCode","supportsPassive","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","Events","UPDATE_REFRESH_INTERVAL","bind_","uid","bound","throttle","last","performance","throttled","debounce","immediate","cancel","debounced","later","Fn","EVENT_MAP","EventTarget$2","ael","allowedEvents_","oldTimeout","dispatchEvent","objName","name_","isEvented","eventBusEl_","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","removeListenerOnDispose","removeRemoverOnTargetDispose","largs","targetOrType","typeOrListener","evented","eventBusKey","el_","StatefulMixin","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","titleCaseEquals","str1","str2","Str","toTitleCase","Component$1","ready","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","restoreEl","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","contentEl_","names","currentChild","getChild","iconName","experimentalSvgIcons","xmlnsURL","iconContainer","svgEl","useEl","iconIsSet_","componentName","componentClassName","componentClass","ComponentClass","getComponent","contentEl","childFound","compEl","children","parentOptions","handleAdd","playerOptions","addChild","workingChildren","Tech","some","wchild","isTech","isReady_","readyQueue","skipListeners","dimension","widthOrHeight","pxIndex","computedWidthOrHeight","currentDimension","boundingClientRect","blur","spatialNavigation","enabled","handleKeyDown","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","couldBeTap","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","cancelAnimationFrame","idName","cancelName","inert","tabIndex","getIsDisabled","getIsExpresslyInert","isVisibleStyleProperty","elementStyle","thisVisibility","thisDisplay","invisibleStyle","isBeingRendered","opacity","isVisible","elementCenter","clientWidth","innerWidth","clientHeight","innerHeight","pointContainer","elementFromPoint","ComponentToRegister","isComp","isPrototypeOf","reason","components_","Player","players","playerNames","pname","rangeCheck","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","timeRangesObj","createTimeRanges$1","registerComponent","defaultImplementation","guide","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","createTimeRanges","createTimeRange","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","isPromise","then","silencePromise","errorTypes","1","2","3","4","5","MEDIA_ERR_CUSTOM","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","MEDIA_ERR_ENCRYPTED","trackToJson_","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ModalDialog","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","description","buildCSSClass","previouslyActiveEl_","localize","desc","fillAlways","wasPlaying_","paused","pauseOnOpen","hadControls_","show","conditionalFocus_","hide","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","closeButton","content_","activeEl","activeElement","playerEl","originalEvent","focusableEls","focusableEls_","focusIndex","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","tracks_","addTrack","labelchange_","rtrack","change","addtrack","removetrack","labelchange","disableOthers$1","AudioTrackList","changing_","enabledChange_","removeTrack","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","queueTrigger","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","trackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","TextTrackMode","hidden","showing","Track","trackProps","newLabel","parseUrl","baseURI","getAbsoluteURL","getFileExtension","splitPathRe","isCrossOrigin","winLoc","origin","Url","parseCues","srcContent","groupCollapsed","groupEnd","loadTrack","crossOrigin","tech_","loaded_","TextTrack","srclang","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","isDisposed","rvf_","requestVideoFrameCallback","disposeHandler","stopTracking","startTracking","newMode","ct","active","cancelVideoFrameCallback","originalCue","originalCue_","removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","HTMLTrackElement","NONE","LOADED","load","LOADING","ERROR","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","emitTapEvents","triggerSourceset","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","currentTimeInterval","manuallyTriggered","clearTracks","manualProgressOff","manualTimeUpdatesOff","removeRemoteTextTrack","error_","_isScrubbing","_seconds","trackListChanges","script","addWebVttScript_","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","manualCleanup","htmlTrackElement","createRemoteTextTrack","remoteTextTrackEls","getTrackElementByTrack_","removeTrackElement_","Promise","reject","cb","requestNamedAnimationFrame","cancelNamedAnimationFrame","override","_type","srcObj","canPlayType","techs_","canPlaySource","defaultTechOrder_","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","featuresVideoFrameCallback","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","cleanupAutoTextTracks","registerTech","middlewares","middlewareInstances","TERMINATOR","use","middleware","setSourceHelper","setTech","mw","middlewareIterator","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","played","seekable","volume","ended","allowedSetters","setCurrentTime","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","mwf","mwi","lastRun","mwrest","_src","MimetypesKind","opus","ogv","mov","m4v","mkv","m4a","mp3","aac","caf","flac","oga","wav","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","icons","backKeyCode","SpatialNavKeyCodes","codes","ff","rw","back","415","19","417","412","keyName","STEP_SECONDS$1","SpatialNavigation","focusableComponents","isListening_","isPaused_","onKeyDown_","lastFocusedComponent_","updateFocusableComponents","refocusComponent","handlePlayerFocus_","handlePlayerBlur_","actualEvent","isEventKey","action","getEventName","performMediaAction_","userSeek_","liveTracker","isLive","nextSeekedFromUser","nextFocusedElement","isChildrenOfPlayer","currentComponent","getCurrentComponent","closest","searchForTrackSelect_","currentTarget","getIsFocusable","resume","searchForChildrenCandidates","componentsArray","getIsAvailableToBeFocused","items","findSuitableDOMChild","searchForSuitableChild","suitableChild","curComp","currentFocusedComponent","currentPositions","getPositions","candidates","isInDirection_","bestCandidate","findBestCandidate_","focusedComponent","currentCenter","minDistance","candidate","candidateCenter","distance","calculateDistance_","srcRect","targetRect","userActive","center1","center2","dx","dy","MediaLoader","techOrder","techName","getTech","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","clickHandler","PosterImage","update","update_","crossorigin","poster","setSrc","loading","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","hex","tryUpdateStyle","getCSSPositionValue","TextTrackDisplay","updateDisplayTextHandler","updateDisplayHandler","updateDisplayOverlay","toggleDisplay","preselectTrack","screenOrientation","screen","orientation","changeOrientationEvent","modes","userPref","selectedLanguage","firstDesc","firstCaptions","preferredTrack","allowMultipleShowingTracks","clearDisplay","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","videoHeight","CSS","supports","playerWidth","currentWidth","playerHeight","currentHeight","playerAspectRatio","videoAspectRatio","videoWidth","insetInlineMatch","insetBlockMatch","overrides","textTrackSettings","getValues","textOpacity","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontFamily","fontVariant","cueEl","updateDisplayState","LoadingSpinner","isAudio","playerType","Button","BigPlayButton","mouseused_","setIcon","handleMouseDown","playPromise","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","TimeDisplay","updateTextNode_","span","labelText_","textNode_","enableSmoothSeeking","updateContent","formattedTime_","oldNode","CurrentTimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","displayNegative","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Num","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","spatialNavOptions","spatialNavEnabled","horizontalSeek","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","seekableEnd","bufferedEnd","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","updateTime","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","SeekBar","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","seekableStart","videoWasPlaying","mouseDown","newTime","calculateDistance","mouseTimeDisplay","handleAction","gotoFraction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","handlePictureInPictureAudioModeChange","isSourceAudio","currentType","isAudioMode","audioPosterMode","audioOnlyMode","isInPictureInPicture","exitPictureInPicture","pictureInPictureEnabled","disablePictureInPicture","enableDocumentPictureInPicture","requestPictureInPicture","FullscreenToggle","fsApi_","fullscreenEnabled","checkVolumeSupport","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","MouseVolumeLevelDisplay","updateVolume","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_","handleKeyPress","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","SkipForward","validOptions","skipTime","getSkipForwardTime","toLocaleString","skipButtons","forward","currentVideoTime","SkipBackward","getSkipBackwardTime","backward","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","removeEventListenerForItem","childComponent","addEventListenerForItem","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","hideThreshold_","titleEl","titleComponent","addItem","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","lockShowing","unlockShowing","TrackButton","updateHandler","MenuItem","selectable","isSelected_","multiSelectable","menuItemEl","TextTrackMenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","allHidden","TextTrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","selectCurrentItem_","track_","findChaptersTrack","setTrack","updateHandler_","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","playbackRateSupported","Spacer","CustomControlSpacer","ControlBar","ErrorDisplay","TextTrackSelect","selectLabelledbyIds","legendId","labelId","selectoptions","SelectOptions","optionText","optionId","option","TextTrackFieldset","legendElement","legendText","selects","selectConfig","selectConfigs","selectClassName","textTrackSelect","TextTrackSettingsColors","textTrackComponentid","ElFgColorFieldset","fieldSets","ElBgColorFieldset","ElWinColorFieldset","TextTrackSettingsFont","TrackSettingsControls","defaultsDescription","resetButton","doneButton","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","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","renderModalComponents","endDialog","setDefaults","persistTextTrackSettings","bindFunctionsToSelectsAndButtons","restoreSettings","textTrackSettingsColors","textTrackSettingsFont","trackSettingsControls","saveSettings","localStorage","getItem","setValues","setItem","removeItem","ttDisplay","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","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","TitleBar","updateDom_","techEl","techAriaAttrs","techAriaAttr","setState","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","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","triggerReady","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","overrideNative_","techTracks","removeOldTracks","removeTracks","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","webkitEnterFullScreen","HAVE_METADATA","webkitDisplayingFullscreen","webkitExitFullScreen","webkitKeys","resetMediaElement","addTextTrack","getVideoPlaybackQuality","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","TEST_VID","canControlVolume","canControl","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","boundUpdatePlayerHeightOnAudioOnlyMode_","updatePlayerHeightOnAudioOnlyMode_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","audioOnlyMode_","audioPosterMode_","audioOnlyCache_","controlBarHeight","hiddenChildren","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","parsedSVG","errorNode","sprite","majorVersion","listenForUserActivity_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","deviceClassNames","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","fill_","fluid","links","linkEl","techGet_","techCall_","posterImage","privDimension","parsedVal","aspectRatio_","width_","height_","idClass","ratioParts","ratioMultiplier","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","playsinline","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","catch","promise","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","updateSourceCaches_","playerSrc","currentSource","eventSrc","lastSource_","techSrc","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","userActions","click","inAllowedEls","doubleClick","userWasActive","cancelable","targetPlayer","isFs","fullscreen","initTime","inactivityTimeout","defaultPlaybackRate","resolve","play_","isSrcReady","isSafariOrIOS","waitToPlay_","isNativeReplay","resetProgressBar_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","defaultMuted","isFS","oldValue","toggleFullscreenClass_","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","supportsFullScreen","preferFullWindow","enterFullWindow","exitFullscreenHelper_","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","togglePictureInPictureClass_","documentPictureInPicture","pipContainer","titleBar","requestWindow","pipWindow","pipVideo","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","fullscreenKey","keydownEvent","muteKey","playPauseKey","FSToggle","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","foundSourceAndTech","flip","finder","sourceOrder","isRetry","resetRetryOnError_","middlewareSource","src_","handleSrc_","notSupportedMessage","stopListeningForErrors","sourceTech","selectSource","vhs","doReset_","resetControlBarUI_","resetPlaybackRate_","resetVolumeBar_","currentTimeDisplay","durationDisplay","progressControl","loadProgressBar","techAutoplay","newPoster","usingNativeControls_","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","activityCheck","isAudio_","playerChildren","exitPromises","enableAudioOnlyUI_","disableAudioOnlyUI_","audioOnlyModePromise","enablePosterModeUI_","disablePosterModeUI_","modal","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","currentBreakpointClass","responsive_","removeCurrentBreakpoint_","artist","artwork","tt","currentSources","baseOptions","tagOptions","dataSetup","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","instance","createPluginFactory","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","deprecate","warned","deprecateForMajor","oldName","registerPlugin","usingPlugin","hasPlugin","VjsErrors","NetworkBadStatus","NetworkRequestFailed","NetworkRequestAborted","NetworkRequestTimeout","NetworkBodyParserFailed","StreamingHlsPlaylistParserError","StreamingDashManifestParserError","StreamingContentSteeringParserError","StreamingVttParserError","StreamingFailedToSelectNextSegment","StreamingFailedToDecryptSegment","StreamingFailedToTransmuxSegment","StreamingFailedToAppendSegment","StreamingCodecsChangeError","normalizeId","getPlayer","inShadowDom","getRootNode","ShadowRoot","rootNode","defaultView","PlayerComponent","getPlayers","nId","getAllPlayers","writeable","mergeOptions","deregisterPlugin","getPlugins","getPluginVersion","addLanguage","EventTarget","QualityLevel","bitrate","QualityLevelList","levels_","selectedIndex_","qualityLevel","getQualityLevelById","removed","addqualitylevel","removequalitylevel","version$5","initPlugin$1","originalPluginFn","qualityLevels","qualityLevelList","resolveManifestRedirect","req","logger","bufferedRangesToString","bufferedRangesStr","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","totalDuration","sumDurations","defaultDuration","durationList","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","exactManifestTimings","partsAndSegments","partAndSegment","canUseFudgeFactor","isExactlyAtTheEnd","isExtremelyCloseToTheEnd","isExcluded","excludeUntil","isIncompatible","isEnabled","excluded","isDisabled","isAes","estimateSegmentRequestTime","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","Playlist","createPlaylistID","groupID","parseManifest","onwarn","oninfo","customTagParsers","customTagMappers","llhls","customParser","setupMediaPlaylist","playlistErrors_","setupMediaPlaylists","resolveMediaGroupUris","mainForMedia","addPropertiesToMain","createGroupID","phonyUri","audioOnlyMain","groupId","DateRangesStorage","offset_","pendingDateRanges_","processedDateRanges_","firstSegment","trimProcessedDateRanges_","pendingDateRange","dateRangeClasses","dateRangesToProcess","processDateRange","classListIndex","QUOTA_EXCEEDED_ERR","getStreamingNetworkErrorMetadata","parseFailure","isBadStatus","isFailure","errorMetadata","isBadStatusOrParseFailure","errorType","timedout","erroType","EventTarget$1","addLLHLSQueryDirectives","parameters","nextMSN","nextPart","_HLS_part","_HLS_msn","canSkipUntil","_HLS_skip","parsedUri","searchParams","updateSegment","skipped","updateSegments","oldSegments","newSegments","newIndex","newSegment","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMain$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","refreshDelay","lastPart","lastDuration","playlistMetadataPayload","renditions","PlaylistLoader","logger_","vhs_","addDateRangesToTextTrack_","addDateRangesToTextTrack","vhsOptions","dateRangesStorage_","handleMediaupdatetimeout_","handleLoadedPlaylist_","mediaPlaylist","setOffset","setPendingDateRanges","availableDateRanges","getDateRangesToProcess","playlistRequestError","haveMetadata","playlistString","startingState","playlistObject","playlistInfo","parseManifest_","lastRequest","pendingMedia_","media_","updateMediaUpdateTimeout_","parsedPlaylist","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","shouldDelay","delay","mediaChange","mainPlaylistRef","started","setupInitialPlaylist","srcUri","isUpdate","pathway","ID","oldPlaylistUri","oldPlaylistId","newPlaylistUri","createCloneURI_","newPlaylistId","createCloneAttributes_","updatedPlaylist","createClonePlaylist_","updateOrDeleteCloneMedia","oldMediaPlaylist","createClonedMediaGroups_","basePlaylist","playlistId","baseID","newUri","newPlaylistID","newMediaPlaylist","newProps","hostname","HOST","PARAMS","oldAttributes","keyIds","keysystem","callbackWrapper","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","callAllRequestHooks","requestSet","newOptions","requestCallback","callAllResponseHooks","responseSet","responseCallback","xhrFactory","XhrFunction","beforeRequest","Vhs","_requestCallbackSet","_responseCallbackSet","xhrMethod","beforeRequestOptions","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","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","retryCount","seekTo","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","callbackOnCompleted","containerRequest","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","dashGroupId","parseMainXml","mainXml","srcUrl","removeOldMediaGroupLabels","newMain","updateMain","oldMain","noChanges","playlistUpdate","equivalentSidx","neitherMap","equivalentMap","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","filterChangedSidxMappings","videoSidx","mediaGroupSidx","DashPlaylistLoader","srcUrlOrPlaylist","mainPlaylistLoader","mainPlaylistLoader_","isMain_","addMetadataToTextTrack","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","childPlaylist_","mediaRequest_","fin","requestErrored_","REQUEST_TYPE","sidxContainer","internal","playlistExclusionDuration","minimumUpdatePeriodTimeout_","createMupOnMedia_","addSidxSegments_","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMain_","mainChanged","haveMain_","hasPendingRequest","manifestInfo","mainXml_","date","mainLoaded_","handleMain_","syncClientServerClock_","utcTiming","clientOffset_","serverTime","addEventStreamToMetadataTrack_","parsedManifest","mpl","mup","createMUPTimeout_","mediaID","mediaChanged","createMediaUpdateTimeout","metadataArray","eventStreamNode","cueTime","frames","defaultKID","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","stringToArrayBuffer","browserWorkerPolyFill","workerObj","createObjectURL","Blob","blob","BlobBuilder","getBlob","factory","objectUrl","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","workerCode$1","commonjsGlobal","globalThis","Stream$8","init","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","MAX_UINT32$1","getUint64$3","numbers","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","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","nalCount","nalUnitType","dts","pts","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","frame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils$1","generateSampleTable","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","ONE_SECOND_IN_TS$4","clock$2","clock$1","sumFrameByteLengths","currentObj","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","concatenateFrameData","audioFrameUtils$1","ONE_SECOND_IN_TS$3","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","scale","trackDecodeInfo$1","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","Stream$7","cea708Parser","CaptionStream$2","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","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","unicode","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","indent","field","dataChannel","field_","dataChannel_","setConstants","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_","indentations","isColorPAC","isNormalChar","logWarning","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","newBaseRow","popOn","baseRow","rollUp","paintOn","captionStream","CaptionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","Stream$6","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","TimestampRolloverStream$1","lastDTS","referenceDTS","type_","MetadataStream","timestampRolloverStream","TimestampRolloverStream","handleRollover","typedArrayIndexOf$1","typedArray","fromIndex","currentIndex","typedArrayIndexOf","textEncodingDescriptionByte","Iso88591","Utf16","Utf16be","Utf8","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","frameParsers","mimeTypeEndIndex","descriptionEndIndex","LINK_MIME_TYPE","pictureType","pictureData","owner","privateData","parseId3Frames$1","frameSize","frameHeader","frameStart","tagSize","hasExtendedHeader","parseId3","parseId3Frames","parseSyncSafeInteger","Stream$5","StreamTypes$3","id3","bufferSize","dispatchType","dataAlignmentIndicator","timeStamp","TransportPacketStream","TransportParseStream","ElementaryStream","metadataStream","Stream$4","CaptionStream$1","StreamTypes$2","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$1","PAT_PID","MP2T_PACKET_LENGTH","AdtsStream$1","m2ts_1","Stream$3","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","skipWarn_","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb$1","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","H264Stream$1","NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","Stream$2","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$1","H264Stream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","percentEncode","parseIso88591","parseAdtsSize","lowThree","highTwo","parseType$4","parseSampleRate","parseAacTimestamp","isLikelyAacData","parseType","Stream$1","aacUtils","setTimestamp","bytesLeft","tempLength","VideoSegmentStream","AudioSegmentStream","Transmuxer","CoalesceStream","AUDIO_PROPERTIES$1","audioProperties","VIDEO_PROPERTIES$1","videoProperties","frameUtils","audioFrameUtils","trackDecodeInfo","m2ts","clock","AdtsStream","AacStream","ONE_SECOND_IN_TS$1","AUDIO_PROPERTIES","VIDEO_PROPERTIES","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","audioTrack","caption","captionStreams","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","toUnsigned$3","toHexString$1","bin","toUnsigned","parseType$3","parseType_1","toUnsigned$2","parseType$2","findBox$2","subresults","findBox_1","toUnsigned$1","getUint64$2","parseTfdt$2","parseSampleFlags$1","parseSampleFlags_1","parseSampleFlags","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTrun$2","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","parseTfhd$2","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","getEmsgID3","window_1","findBox$1","parseTfdt$1","parseTrun$1","parseTfhd$1","window$2","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","uint8ToCString$1","curChar","retString","uint8ToCString","getUint64$1","parseEmsgBox","boxData","scheme_id_uri","presentation_time","presentation_time_delta","event_duration","message_data","emsgBox","isValidEmsgBox","scaleTime","timeDelta","emsg","hasScheme","isValidV0Box","isDefined","isValidV1Box","emsg$1","findBox","parseType$1","parseTfhd","parseTrun","parseTfdt","window$1","traks","lowestTime","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","getUint8","tkhdVersion","sampleDescriptions","codecConfig","codecConfigType","codecBox","segmentData","emsgBoxes","parsedBox","parsedId3Frames","probe$2","StreamTypes$1","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","nalType","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","StreamTypes","probe","SYNC_BYTE","parsePsi_","table","parseAudioPes_","pesType","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","isAacData","tsInspector","wireTransmuxerEvents","initArray","postMessage","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","trackIds","id3Frames","emsgData","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","timestampOffset","appendStart","onmessage","messageHandlers","TransmuxWorker","handleData_","transmuxedData","videoFrameDtsTime","videoFramePtsTime","handleDone_","handleGopInfo_","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","triggerSegmentEventFn","waitForEndedTimelineEvent","handleMessage","currentTransmux","dequeue","handleError","segmentInfoPayload","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","keyInfo","parseInitSegment","handleInitSegmentResponse","encryptedBytes","parseError","handleSegmentResponse","newBytes","lastReachedChar","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","probeResult","handleSegmentBytes","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","decryptionWorker","decryptionHandler","decrypted","keyBytes","decryptError","encrypted","decryptSegment","requestId","decryptedBytes","waitForCompletion","didError","segmentFinish","endOfAllRequests","handleLoadEnd","loadendState","abortFn","calledAbortFn","handleProgress","progressFn","firstBytesReceivedAt","mediaSegmentRequest","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","limitRenditionByPlayerDimensions","playlistController","getAudioTrackPlaylists_","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","chosenRep","haveResolution","resolutionBestRepList","resolutionBestRep","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","leastPixelDiffSelector","leastPixelDiffList","pixelDiff","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","customPixelRatio","systemBandwidth","playlistController_","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","minRebufferMaxBandwidthSelector","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","concatSegments","segmentObj","compactSegmentUrlDescription","pathname","createCaptionsTrackIfNotExists","inbandTextTracks","getTrackById","def","captionService","addCaptionData","captionArray","Cue","WebKitDataCue","deprecateOldCue","addMetadata","videoDuration","metadataTrack","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","finiteDuration","nextTime","dateRangeAttr","scte35Out","scte35In","dateRangeKeysToOmit","addDateRangeMetadata","createMetadataTrackIfNotExists","inBandMetadataTrackDispatchType","removeCuesFromTrack","removeDuplicateCuesFromTrack","uniqueCues","cueKey","gopsSafeToAlignWith","mapping","currentTimePts","updateGopBuffer","removeGopBuffer","updatedBuffer","shallowEqual","akeys","bkeys","getSyncSegmentCandidate","targetTime","timelineSegments","MIN_BACK_BUFFER","CHECK_BUFFER_DELAY","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","illegalMediaSwitch","loaderType","startingMedia","safeBackBufferTrimTime","trimTime","maxTrimTime","segmentInfoString","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","isEncrypted","ke","isMediaInitialization","SegmentLoader","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_","shouldForceTimestampOffsetAfterResync_","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_","getMediaSequenceSync","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","getMediaInfo_","videoBuffered","audioBuffered","storedMap","storedKey","playlist_","couldBeginLoading_","init_","resetEverything","newPlaylist","syncInfo","setDateTimeMappingForStart","oldId","mediaSequenceSync_","buffered_","diagnostics","isLLHLS","resetLoader","resyncLoader","mediaSequenceDiff","saveExpiredSegmentInfo","resetAppendedStatus","isHlsTs","force","removesRemaining","removeFinished","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","isReliable","getSyncInfoFromMediaSequenceSync_","mediaInfoForTime","nextSegment","hasIndependentSegments","lastSegmentLastPart","forceTimestampOffset","generateSegmentInfo_","finalTargetTime","mediaSequenceSyncInfo","getSyncInfoForTime","isAppended","nextMediaSequenceSyncInfo","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","videoTimestampOffset","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","simpleSegment","earlyAbortWhenNeeded_","checkForAbort_","checkForIllegalMediaSwitch","timeType","timingInfoProperty","captionData","hasAppendedData_","handleCaptions_","captionTracks","captionTrack","trackName","handleId3_","callQueue","fun","loadQueue","getCurrentMediaInfo_","setTimeMapping_","updateMediaSecondsLoaded_","initSegmentForMap","segmentKey","useVideoTimingInfo","firstVideoFrameTimeForData","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","processMetadataQueue_","appendData_","changedTimestampOffset","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","handleQuotaExceededError_","appendBuffer","handleAppendError_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","getInitSegmentAndUpdateState_","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","handleAbort_","handleProgress_","handleTrackInfo_","handleTimingInfo_","handleSegmentTimingInfo_","segmentRequestFinished_","segInfo","removeToTime","previousSegment","bandwidthInfo","saveTransferStats_","handleTimeout_","saveBandwidthRelatedStats_","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","didChange","getSegmentStartTimeForTimestampOffsetCalculation_","prioritizedTimingInfo","markAppended","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","badSegmentGuess","badPartGuess","endOfStream","segmentProcessingTime","segmentProcessingThroughput","bufferTypes","sourceBuffer","queuePending","nextQueueIndexOfType","queueEntry","shiftQueue","queueIndex","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","addSourceBuffer","mime","removeSourceBuffer","changeType","newCodecBase","oldCodec","oldCodecBase","codecsChangeInfo","pushQueue","onUpdateend","bufferedRangesForType","descriptiveString","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","hasCreatedSourceBuffers","hasInitializedAnyEme","addOrChangeSourceBuffers","canRemoveSourceBuffer","SourceBuffer","canChangeType","processedAppend_","videoBuffer","que","audioBuffer","uint8ToUtf8","uintArray","bufferToHexString","uInt8Buffer","VTT_LINE_TERMINATORS","NoVttJsError","VTTSegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","loadVttJs","combinedByteLength","combinedSegment","timestampOffsetForTimeline","checkTimestampOffset","skipEmptySegments_","stopForError","requested","parseVTTCues_","updateTimeMapping_","timelines","decodeBytesToString","timestampmap","MPEGTS","LOCAL","mapData","mappingObj","mpegTsInSeconds","diff","handleRollover_","firstStart","lastStart","valueIn90khz","referenceIn90khz","findAdCue","mediaTime","adStartTime","adEndTime","updateAdCues","adOffset","adTotal","SyncInfo","appended","start_","end_","segmentIndex_","partIndex_","appended_","SyncInfoData","segmentSyncInfo","partsSyncInfo","segmentSyncInfo_","partsSyncInfo_","partSyncInfo","MediaSequenceSync","storage_","diagnostics_","isReliable_","syncInfoData","resetAppendStatus","isReliablePlaylist_","updateStorage_","calculateBaseTime_","isInRange","startingMediaSequence","startingTime","newStorage","newDiagnostics","currentMediaSequence","prevSyncInfoData","segmentStart","segmentIsAppended","currentPartStart","partStart","partEnd","partIsAppended","fallback","DependantMediaSequenceSync","parent_","getSyncInfoForMediaSequence","MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC","syncPointStrategies","run","mediaSequenceSync","timelineToDatetimeMappings","lastDistance","datetimeMapping","z","discontinuitySync","discontinuities","SyncController","vtt","mediaSequenceStorage_","vodSyncPointStrategy","syncPoints","runStrategies_","syncPointInfo","strategy","selectedSegment","selectSyncPoint_","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","timelineChangeInfo","workerCode","unpad","padded","precompute","tables","encTable","decTable","sbox","sboxInv","xInv","th","x2","x4","x8","tEnc","tDec","aesTables","AES","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","a2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","encrypted32","Int32Array","decipher","decrypted32","init0","init1","init2","init3","wordIx","Decrypter","STEP","asyncStream_","decryptChunk_","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","segmentLoaders","mainSegmentLoader","activeTrack","activeGroup","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","isMainPlaylist","onGroupChanging","onTrackChanged","lastTrack","pc","selectPlaylist","fastQualityChange_","setAudio","excludePlaylist","defaultTrack","setupListeners","requestOptions","initialize","variantLabel","useForcedSubtitles","groupMatch","variants","groupKeys","groupPropertyList","activeTrack_","setupMediaGroups","audioSegmentLoader","activeAudioGroup","onAudioTrackChanged","createMediaTypes","SteeringManifest","priority_","pathwayClones_","version_","ttl_","reloadUri_","ContentSteeringController","currentPathway","defaultPathway","availablePathways_","steeringManifest","proxyServerUrl_","manifestType_","ttlTimeout_","request_","currentPathwayClones","nextPathwayClones","excludedSteeringManifestURLs","xhr_","getBandwidth_","steeringTag","serverUri","steeringUri","startsWith","decodeDataUriManifest_","reloadUri","pathwayId","defaultServiceLocation","proxyServerURL","getRequestURI","errorInfo","retrySeconds","startTTLTimeout_","steeringManifestJson","assignSteeringProperties_","parsedMetadata","contentSteeringManifest","steeringUrl","steeringUrlObject","proxyServerUrlObject","encodeURI","setSteeringParams_","dataUri","urlObject","getPathway","networkThroughput","pathwayKey","throughputKey","steeringJson","ttl","TTL","pathwayClones","chooseNextPathway","pathwaysByPriority","nextPathway","proxyURI","setProxyServerUrl_","steeringURI","ttlMS","requestSteeringManifest","clearTTLTimeout_","newTag","ABORT_EARLY_EXCLUSION_SECONDS","Vhs$1","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","bufferLowWaterLine","bufferHighWaterLine","bufferBasedABR","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","PlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","keyStatusMap_","segmentLoaderSettings","setupMainPlaylistLoaderListeners_","subtitleSegmentLoader_","onLoad","getBandwidth","contentSteeringController_","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","shouldSwitchToMedia_","switchMedia_","newId","renditionInfo","mediaPlaylists","dashMediaPlaylists","abrTimer_","checkABR_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","selectedMedia","attachContentSteeringListeners_","initContentSteeringController_","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","haveJsonSource","handleUpdatedMediaPlaylist","playlistToExclude","waitingForFastQualityPlaylistReceived_","runFastQualitySwitch_","lastExcludeReason_","playlistOutdated","stuckAtPlaylistEnd_","playlistLoaderEvents","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","segmentLoaderEvents","startPoint","mainMediaInfo","getExpiredTime","absolutePlaylistEnd","pathwayAttribute_","reIncludeDelay","excludePathway","excludeThenChangePathway_","addAvailablePathway","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","seekableRanges","updateDuration_","setDuration","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","getPendingSegmentPlaylist","playlistCodecs","supportFunction","unsupportedCodecs","unsupportedAudio","supporter","variantAudioGroup","switchMessages","newCodec","areMediaTypesKnown_","createSourceBuffers","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","exclusionReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","assignTagProperties","clearAvailablePathways","contentSteeringEvents","didDashTagChange","didDASHTagChange","didPathwaysChange","availablePathways","getAvailablePathways","newPathways","resetContentSteeringController_","handlePathwayClones_","didEnablePlaylists","differentPathwayId","steeringExclusion","noExcludeUntil","shouldExclude","changeSegmentPathway_","hasClones","entries","newClone","updateOrDeleteClone","oldClone","equalPathwayClones_","playlistsToClone","addClonePathway","aParams","bParams","switchMediaForDASHContentSteering_","nonUsableKeyStatusCount","NON_USABLE","keyIdSet","getKeyIdSet","USABLE","hasUsableKeyStatus","nonUsableExclusion","isNonHD","excludedForNonUsableKey","isString","keyIdHexString","formattedKeyIdString","addKeyStatus_","excludeNonUsableThenChangePlaylist_","excludeNonUsablePlaylistsByKeyId_","enableFunction","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","vhsHandler","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","playedRanges_","consecutiveUpdates","lastRecordedTime","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","resetTimeUpdate_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","setSeekingHandlers","seekingAppendCheck_","fixesBadSeeks_","clearSeekingAppendCheck_","watchForBadSeeking_","checkCurrentTime_","isBufferedDifferent","bufferedRanges","waiting_","playedRanges","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","minAppendedDuration","bufferedToCheck","timeAhead","nextRange","livePoint","videoUnderflow","videoUnderflow_","skipTheGap_","allowedEnd","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gapInfo","gaps","defaultOptions","errorInterval","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","getSource","cleanupEvents","reinitPlugin","reloadSourceOnError","version$4","version$3","version$2","version$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","LOCAL_STORAGE_KEY","handleVhsMediaChange","handleVhsLoadedMetadata","addQualityLevel","emeKeySystems","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","getAllPsshKeySystemsOptions","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","eme","initializeMediaKeys","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","setupEmeOptions","sourceOptions","getVhsLocalStorage","storedObject","updateVhsLocalStorage","objectToStore","expandDataUri","addOnRequestHook","addOnResponseHook","removeOnRequestHook","removeOnResponseHook","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","onRequest","onResponse","offRequest","offResponse","Component","VhsHandler","initialBandwidth","_player","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","overrideNativeAudioTracks","overrideNativeVideoTracks","featuresNativeVideoTracks","useBandwidthFromLocalStorage","useNetworkInformationApi","playbackWatcherOptions","playbackWatcher_","attachStreamingEventListeners_","defaultSelector","playerBandwidthEst","networkInformation","connection","mozConnection","webkitConnection","tenMbpsAsBitsPerSecond","networkInfoBandwidthEstBitsPerSec","downlink","invBandwidth","invThroughput","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaSecondsLoaded_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","appendsToLoadedData_","timeToLoadedData","timeToLoadedData_","currentTech","playerDimensions","currentDimensions","setupEme_","setupQualityLevels_","mediaSourceUrl_","audioPlaylistLoader","initializedEme","createKeySessions_","didSetupEmeOptions","updatePlaylistByKeyStatus","handleWaitingForKey_","qualityLevels_","playlistControllerEvents","playbackWatcher","VhsSourceHandler","setupXhrHooks_","simpleType","getOverrideNative","canUseMsePlayback","defaultOverrideNative","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","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll"],"mappings":"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","file":"js/chunk-fbe26534.7497cdee.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';","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","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\nvar InterceptorsStorage = require('./interceptors.js');\n\nvar RetryManager = require(\"./retry.js\");\n\ncreateXHR.httpHandler = require('./http-handler.js');\ncreateXHR.requestInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.responseInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.retryManager = new RetryManager();\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 } // call all registered request interceptors for a given request type:\n\n\n if (options.requestType && createXHR.requestInterceptorsStorage.getIsEnabled()) {\n var requestInterceptorPayload = {\n uri: options.uri || options.url,\n headers: options.headers || {},\n body: options.body,\n metadata: options.metadata || {},\n retry: options.retry,\n timeout: options.timeout\n };\n var updatedPayload = createXHR.requestInterceptorsStorage.execute(options.requestType, requestInterceptorPayload);\n options.uri = updatedPayload.uri;\n options.headers = updatedPayload.headers;\n options.body = updatedPayload.body;\n options.metadata = updatedPayload.metadata;\n options.retry = updatedPayload.retry;\n options.timeout = updatedPayload.timeout;\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 // do not call load 2 times when response interceptors are enabled\n // why do we even need this 2nd load?\n if (xhr.readyState === 4 && !createXHR.responseInterceptorsStorage.getIsEnabled()) {\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 clearTimeout(options.retryTimeout);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0; // we would like to retry on error:\n\n if (!aborted && createXHR.retryManager.getIsEnabled() && options.retry && options.retry.shouldRetry()) {\n options.retryTimeout = setTimeout(function () {\n options.retry.moveToNextAttempt(); // we want to re-use the same options and the same xhr object:\n\n options.xhr = xhr;\n\n _createXHR(options);\n }, options.retry.getCurrentFuzzedDelay());\n return;\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: failureResponse.headers || {},\n body: failureResponse.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n failureResponse.body = _updatedPayload.body;\n failureResponse.headers = _updatedPayload.headers;\n }\n\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 clearTimeout(options.retryTimeout);\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 } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: response.headers || {},\n body: response.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload2 = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n response.body = _updatedPayload2.body;\n response.headers = _updatedPayload2.headers;\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 clearTimeout(options.retryTimeout);\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","import window from 'global/window';\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nexport default function decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}","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;","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 1.3.0 @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 = \"1.3.0\";\n\nconst isObject = obj => {\n return !!obj && typeof obj === 'object';\n};\n\nconst merge = (...objects) => {\n return objects.reduce((result, source) => {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(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};\nconst values = o => Object.keys(o).map(k => o[k]);\n\nconst range = (start, end) => {\n const result = [];\n\n for (let i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nconst flatten = lists => lists.reduce((x, y) => x.concat(y), []);\nconst from = list => {\n if (!list.length) {\n return [];\n }\n\n const result = [];\n\n for (let i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nconst findIndexes = (l, key) => l.reduce((a, e, i) => {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\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\nconst union = (lists, keyFunction) => {\n return values(lists.reduce((acc, list) => {\n list.forEach(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 INVALID_NUMBER_OF_CONTENT_STEERING: 'INVALID_NUMBER_OF_CONTENT_STEERING',\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\nconst urlTypeToSegment = ({\n baseUrl = '',\n source = '',\n range = '',\n indexRange = ''\n}) => {\n const segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n const rangeStr = range ? range : indexRange;\n const ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n let startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n let 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 let 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,\n offset: startRange\n };\n }\n\n return segment;\n};\nconst byteRangeToString = byterange => {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n let 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\nconst 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\nconst 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(attributes) {\n const {\n duration,\n timescale = 1,\n sourceDuration,\n periodDuration\n } = attributes;\n const endNumber = parseEndNumber(attributes.endNumber);\n const 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(attributes) {\n const {\n NOW,\n clientOffset,\n availabilityStartTime,\n timescale = 1,\n duration,\n periodStart = 0,\n minimumUpdatePeriod = 0,\n timeShiftBufferDepth = Infinity\n } = attributes;\n const 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 const now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n const periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n const periodEndWC = now + minimumUpdatePeriod;\n const periodDuration = periodEndWC - periodStartWC;\n const segmentCount = Math.ceil(periodDuration * timescale / duration);\n const availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n const 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/**\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\nconst toSegments = attributes => number => {\n const {\n duration,\n timescale = 1,\n periodStart,\n startNumber = 1\n } = attributes;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodStart,\n time: number * duration\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\nconst parseByDuration = attributes => {\n const {\n type,\n duration,\n timescale = 1,\n periodDuration,\n sourceDuration\n } = attributes;\n const {\n start,\n end\n } = segmentRange[type](attributes);\n const segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n const index = segments.length - 1; // section is either a period or the full source\n\n const 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\nconst segmentsFromBase = attributes => {\n const {\n baseUrl,\n initialization = {},\n sourceDuration,\n indexRange = '',\n periodStart,\n presentationTime,\n number = 0,\n duration\n } = attributes; // 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 const initSegment = urlTypeToSegment({\n baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n const segment = urlTypeToSegment({\n baseUrl,\n source: baseUrl,\n 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 const 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\nconst addSidxSegmentsToPlaylist$1 = (playlist, sidx, baseUrl) => {\n // Retain init segment information\n const initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n const sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n const timeline = playlist.timeline || 0;\n const sidxByteRange = playlist.sidx.byterange;\n const sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n const timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n const mediaReferences = sidx.references.filter(r => r.referenceType !== 1);\n const segments = [];\n const type = playlist.endList ? 'static' : 'dynamic';\n const periodStart = playlist.sidx.timeline;\n let presentationTime = periodStart;\n let number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n let 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 (let i = 0; i < mediaReferences.length; i++) {\n const reference = sidx.references[i]; // size of the referenced (sub)segment\n\n const size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n const duration = reference.subsegmentDuration; // should be an inclusive range\n\n let endIndex; // 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 const indexRange = `${startIndex}-${endIndex}`;\n const attributes = {\n baseUrl,\n timescale,\n timeline,\n periodStart,\n presentationTime,\n number,\n duration,\n sourceDuration,\n indexRange,\n type\n };\n const 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\nconst SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nconst 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\nconst getUniqueTimelineStarts = timelineStarts => {\n return union(timelineStarts, ({\n timeline\n }) => timeline).sort((a, b) => a.timeline > b.timeline ? 1 : -1);\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\nconst findPlaylistWithName = (playlists, name) => {\n for (let 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\nconst getMediaGroupPlaylists = manifest => {\n let mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, (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\nconst updateMediaSequenceForPlaylist = ({\n playlist,\n mediaSequence\n}) => {\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach((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\nconst updateSequenceNumbers = ({\n oldPlaylists,\n newPlaylists,\n timelineStarts\n}) => {\n newPlaylists.forEach(playlist => {\n playlist.discontinuitySequence = timelineStarts.findIndex(function ({\n timeline\n }) {\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 const 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 const firstNewSegment = playlist.segments[0];\n const oldMatchingSegmentIndex = oldPlaylist.segments.findIndex(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,\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 const 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,\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\nconst positionManifestOnTimeline = ({\n oldManifest,\n newManifest\n}) => {\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 const oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n const 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,\n newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nconst generateSidxKey = sidx => sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n\nconst mergeDiscontiguousPlaylists = playlists => {\n // Break out playlists into groups based on their baseUrl\n const playlistsByBaseUrl = playlists.reduce(function (acc, cur) {\n if (!acc[cur.attributes.baseUrl]) {\n acc[cur.attributes.baseUrl] = [];\n }\n\n acc[cur.attributes.baseUrl].push(cur);\n return acc;\n }, {});\n let allPlaylists = [];\n Object.values(playlistsByBaseUrl).forEach(playlistGroup => {\n const mergedPlaylists = values(playlistGroup.reduce((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 const 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 // 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.push(...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 allPlaylists = allPlaylists.concat(mergedPlaylists);\n });\n return allPlaylists.map(playlist => {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nconst addSidxSegmentsToPlaylist = (playlist, sidxMapping) => {\n const sidxKey = generateSidxKey(playlist.sidx);\n const 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};\nconst addSidxSegmentsToPlaylists = (playlists, sidxMapping = {}) => {\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (const i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nconst formatAudioPlaylist = ({\n attributes,\n segments,\n sidx,\n mediaSequence,\n discontinuitySequence,\n discontinuityStarts\n}, isAudioOnly) => {\n const playlist = {\n attributes: {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs,\n ['PROGRAM-ID']: 1\n },\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n discontinuitySequence,\n discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence,\n segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (attributes.serviceLocation) {\n playlist.attributes.serviceLocation = attributes.serviceLocation;\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};\nconst formatVttPlaylist = ({\n attributes,\n segments,\n mediaSequence,\n discontinuityStarts,\n 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 const m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n ['PROGRAM-ID']: 1\n };\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n const vttPlaylist = {\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,\n discontinuitySequence,\n mediaSequence,\n segments\n };\n\n if (attributes.serviceLocation) {\n vttPlaylist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n return vttPlaylist;\n};\nconst organizeAudioPlaylists = (playlists, sidxMapping = {}, isAudioOnly = false) => {\n let mainPlaylist;\n const formattedPlaylists = playlists.reduce((a, playlist) => {\n const role = playlist.attributes.role && playlist.attributes.role.value || '';\n const language = playlist.attributes.lang || '';\n let label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n const roleLabel = role ? ` (${role})` : '';\n label = `${playlist.attributes.lang}${roleLabel}`;\n }\n\n if (!a[label]) {\n a[label] = {\n language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n const 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 const firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nconst organizeVttPlaylists = (playlists, sidxMapping = {}) => {\n return playlists.reduce((a, playlist) => {\n const label = playlist.attributes.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\nconst organizeCaptionServices = captionServices => captionServices.reduce((svcObj, svc) => {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(service => {\n const {\n channel,\n language\n } = service;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n 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\nconst formatVideoPlaylist = ({\n attributes,\n segments,\n sidx,\n discontinuityStarts\n}) => {\n const playlist = {\n attributes: {\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 ['PROGRAM-ID']: 1\n },\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n 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 (attributes.serviceLocation) {\n playlist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nconst videoOnly = ({\n attributes\n}) => attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n\nconst audioOnly = ({\n attributes\n}) => attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n\nconst vttOnly = ({\n attributes\n}) => attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\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\nconst addMediaSequenceValues = (playlists, timelineStarts) => {\n // increment all segments sequentially\n playlists.forEach(playlist => {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = timelineStarts.findIndex(function ({\n timeline\n }) {\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach((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\nconst flattenMediaGroupPlaylists = mediaGroupObject => {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce((acc, label) => {\n const labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nconst toM3u8 = ({\n dashPlaylists,\n locations,\n contentSteering,\n sidxMapping = {},\n previousManifest,\n eventStream\n}) => {\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n const {\n sourceDuration: duration,\n type,\n suggestedPresentationDelay,\n minimumUpdatePeriod\n } = dashPlaylists[0].attributes;\n const videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n const audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n const vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n const captions = dashPlaylists.map(playlist => playlist.attributes.captionServices).filter(Boolean);\n const manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: {\n AUDIO: {},\n VIDEO: {},\n ['CLOSED-CAPTIONS']: {},\n SUBTITLES: {}\n },\n uri: '',\n 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 (contentSteering) {\n manifest.contentSteering = contentSteering;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n if (eventStream && eventStream.length > 0) {\n manifest.eventStream = eventStream;\n }\n\n const isAudioOnly = manifest.playlists.length === 0;\n const organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n const organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n const formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n const playlistTimelineStarts = formattedPlaylists.map(({\n timelineStarts\n }) => timelineStarts);\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 */\nconst getLiveRValue = (attributes, time, duration) => {\n const {\n NOW,\n clientOffset,\n availabilityStartTime,\n timescale = 1,\n periodStart = 0,\n minimumUpdatePeriod = 0\n } = attributes;\n const now = (NOW + clientOffset) / 1000;\n const periodStartWC = availabilityStartTime + periodStart;\n const periodEndWC = now + minimumUpdatePeriod;\n const 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\nconst parseByTimeline = (attributes, segmentTimeline) => {\n const {\n type,\n minimumUpdatePeriod = 0,\n media = '',\n sourceDuration,\n timescale = 1,\n startNumber = 1,\n periodStart: timeline\n } = attributes;\n const segments = [];\n let time = -1;\n\n for (let sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n const S = segmentTimeline[sIndex];\n const duration = S.d;\n const repeat = S.r || 0;\n const 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 let count;\n\n if (repeat < 0) {\n const 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 const end = startNumber + segments.length + count;\n let number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number,\n duration: duration / timescale,\n time,\n timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nconst 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\nconst identifierReplacement = values => (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 const 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 * 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\nconst constructTemplateUrl = (url, values) => url.replace(identifierPattern, identifierReplacement(values));\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\nconst 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\nconst segmentsFromTemplate = (attributes, segmentTimeline) => {\n const templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n const {\n initialization = {\n sourceURL: '',\n range: ''\n }\n } = attributes;\n const mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n const segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(segment => {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n const 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 const timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n const presentationTimeOffset = attributes.presentationTimeOffset || 0;\n const 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 const map = {\n uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n 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\nconst SegmentURLToSegmentObject = (attributes, segmentUrl) => {\n const {\n baseUrl,\n initialization = {}\n } = attributes;\n const initSegment = urlTypeToSegment({\n baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n const segment = urlTypeToSegment({\n 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\nconst segmentsFromList = (attributes, segmentTimeline) => {\n const {\n duration,\n segmentUrls = [],\n periodStart\n } = attributes; // 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 const segmentUrlMap = segmentUrls.map(segmentUrlObject => SegmentURLToSegmentObject(attributes, segmentUrlObject));\n let segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n const segments = segmentTimeInfo.map((segmentTime, index) => {\n if (segmentUrlMap[index]) {\n const 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 const timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n const 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(segment => segment);\n return segments;\n};\n\nconst generateSegments = ({\n attributes,\n segmentInfo\n}) => {\n let segmentAttributes;\n let 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 const segmentsInfo = {\n attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n const 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 const {\n duration,\n timescale = 1\n } = segmentAttributes;\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((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};\nconst toPlaylists = representations => representations.map(generateSegments);\n\nconst findChildren = (element, name) => from(element.childNodes).filter(({\n tagName\n}) => tagName === name);\nconst getContent = element => element.textContent.trim();\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 */\nconst parseDivisionValue = value => {\n return parseFloat(value.split('/').reduce((prev, current) => prev / current));\n};\n\nconst parseDuration = str => {\n const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n const SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n const SECONDS_IN_DAY = 24 * 60 * 60;\n const SECONDS_IN_HOUR = 60 * 60;\n const SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n const durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n const match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n const [year, month, day, hour, minute, second] = match.slice(1);\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};\nconst parseDate = str => {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n const 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\nconst 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(value) {\n const 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(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(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(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTime.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTime\n */\n presentationTime(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(value) {\n return value;\n }\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\nconst parseAttributes = el => {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce((a, e) => {\n const parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nconst 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 // ISO_IEC 23009-1_2022 5.8.5.2.2 The mp4 Protection Scheme\n 'urn:mpeg:dash:mp4protection:2011': 'mp4protection'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {Object[]} references\n * List of objects containing the reference URL as well as its attributes\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {Object[]}\n * List of objects with resolved urls and attributes\n */\n\nconst buildBaseUrls = (references, baseUrlElements) => {\n if (!baseUrlElements.length) {\n return references;\n }\n\n return flatten(references.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n const initialBaseUrl = getContent(baseUrlElement);\n const resolvedBaseUrl = resolveUrl(reference.baseUrl, initialBaseUrl);\n const finalBaseUrl = merge(parseAttributes(baseUrlElement), {\n baseUrl: resolvedBaseUrl\n }); // If the URL is resolved, we want to get the serviceLocation from the reference\n // assuming there is no serviceLocation on the initialBaseUrl\n\n if (resolvedBaseUrl !== initialBaseUrl && !finalBaseUrl.serviceLocation && reference.serviceLocation) {\n finalBaseUrl.serviceLocation = reference.serviceLocation;\n }\n\n return finalBaseUrl;\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\nconst getSegmentInformation = adaptationSet => {\n const segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n const segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n const segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(s => merge({\n tag: 'SegmentURL'\n }, parseAttributes(s)));\n const segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n const segmentTimelineParentNode = segmentList || segmentTemplate;\n const segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n const segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n const 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 const 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 const segmentInfo = {\n template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(s => parseAttributes(s)),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(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 {Object[]} adaptationSetBaseUrls\n * List of objects containing resolved base URLs and attributes\n * inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nconst inheritBaseUrls = (adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) => representation => {\n const repBaseUrlElements = findChildren(representation, 'BaseURL');\n const repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n const attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n const representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(baseUrl => {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, baseUrl)\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\nconst generateKeySystemInformation = contentProtectionNodes => {\n return contentProtectionNodes.reduce((acc, node) => {\n const 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 const keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes\n };\n const psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n const 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\nconst parseCaptionServiceMetadata = service => {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n const values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(value => {\n let channel;\n let language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n [channel, language] = value.split('=');\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel,\n language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n const values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(value => {\n const 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 const [channel, opts = ''] = value.split('=');\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(opt => {\n const [name, val] = opt.split(':');\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 * A map callback that will parse all event stream data for a collection of periods\n * DASH ISO_IEC_23009 5.10.2.2\n * https://dashif-documents.azurewebsites.net/Events/master/event.html#mpd-event-timing\n *\n * @param {PeriodInformation} period object containing necessary period information\n * @return a collection of parsed eventstream event objects\n */\n\nconst toEventStream = period => {\n // get and flatten all EventStreams tags and parse attributes and children\n return flatten(findChildren(period.node, 'EventStream').map(eventStream => {\n const eventStreamAttributes = parseAttributes(eventStream);\n const schemeIdUri = eventStreamAttributes.schemeIdUri; // find all Events per EventStream tag and map to return objects\n\n return findChildren(eventStream, 'Event').map(event => {\n const eventAttributes = parseAttributes(event);\n const presentationTime = eventAttributes.presentationTime || 0;\n const timescale = eventStreamAttributes.timescale || 1;\n const duration = eventAttributes.duration || 0;\n const start = presentationTime / timescale + period.attributes.start;\n return {\n schemeIdUri,\n value: eventStreamAttributes.value,\n id: eventAttributes.id,\n start,\n end: start + duration / timescale,\n messageData: getContent(event) || eventAttributes.messageData,\n contentEncoding: eventStreamAttributes.contentEncoding,\n presentationTimeOffset: eventStreamAttributes.presentationTimeOffset || 0\n };\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 {Object[]} periodBaseUrls\n * Contains list of objects with resolved base urls and attributes\n * 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\nconst toRepresentations = (periodAttributes, periodBaseUrls, periodSegmentInfo) => adaptationSet => {\n const adaptationSetAttributes = parseAttributes(adaptationSet);\n const adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n const role = findChildren(adaptationSet, 'Role')[0];\n const roleAttributes = {\n role: parseAttributes(role)\n };\n let attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n const accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n const captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices\n });\n }\n\n const label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n const labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n const contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection\n });\n }\n\n const segmentInfo = getSegmentInformation(adaptationSet);\n const representations = findChildren(adaptationSet, 'Representation');\n const adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\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 {Object[]} mpdBaseUrls\n * Contains list of objects with resolved base urls and attributes\n * inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nconst toAdaptationSets = (mpdAttributes, mpdBaseUrls) => (period, index) => {\n const periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n const 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 const adaptationSets = findChildren(period.node, 'AdaptationSet');\n const periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n};\n/**\n * Tranforms an array of content steering nodes into an object\n * containing CDN content steering information from the MPD manifest.\n *\n * For more information on the DASH spec for Content Steering parsing, see:\n * https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf\n *\n * @param {Node[]} contentSteeringNodes\n * Content steering nodes\n * @param {Function} eventHandler\n * The event handler passed into the parser options to handle warnings\n * @return {Object}\n * Object containing content steering data\n */\n\nconst generateContentSteeringInformation = (contentSteeringNodes, eventHandler) => {\n // If there are more than one ContentSteering tags, throw an error\n if (contentSteeringNodes.length > 1) {\n eventHandler({\n type: 'warn',\n message: 'The MPD manifest should contain no more than one ContentSteering tag'\n });\n } // Return a null value if there are no ContentSteering tags\n\n\n if (!contentSteeringNodes.length) {\n return null;\n }\n\n const infoFromContentSteeringTag = merge({\n serverURL: getContent(contentSteeringNodes[0])\n }, parseAttributes(contentSteeringNodes[0])); // Converts `queryBeforeStart` to a boolean, as well as setting the default value\n // to `false` if it doesn't exist\n\n infoFromContentSteeringTag.queryBeforeStart = infoFromContentSteeringTag.queryBeforeStart === 'true';\n return infoFromContentSteeringTag;\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\nconst getPeriodStart = ({\n attributes,\n priorPeriodAttributes,\n 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\nconst inheritAttributes = (mpd, options = {}) => {\n const {\n manifestUri = '',\n NOW = Date.now(),\n clientOffset = 0,\n // TODO: For now, we are expecting an eventHandler callback function\n // to be passed into the mpd parser as an option.\n // In the future, we should enable stream parsing by using the Stream class from vhs-utils.\n // This will support new features including a standardized event handler.\n // See the m3u8 parser for examples of how stream parsing is currently used for HLS parsing.\n // https://github.com/videojs/vhs-utils/blob/88d6e10c631e57a5af02c5a62bc7376cd456b4f5/src/stream.js#L9\n eventHandler = function () {}\n } = options;\n const periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n const locations = findChildren(mpd, 'Location');\n const mpdAttributes = parseAttributes(mpd);\n const mpdBaseUrls = buildBaseUrls([{\n baseUrl: manifestUri\n }], findChildren(mpd, 'BaseURL'));\n const contentSteeringNodes = findChildren(mpd, 'ContentSteering'); // 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 const 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((node, index) => {\n const attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n const priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node,\n attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n contentSteeringInfo: generateContentSteeringInformation(contentSteeringNodes, eventHandler),\n // TODO: There are occurences where this `representationInfo` array contains undesired\n // duplicates. This generally occurs when there are multiple BaseURL nodes that are\n // direct children of the MPD node. When we attempt to resolve URLs from a combination of the\n // parent BaseURL and a child BaseURL, and the value does not resolve,\n // we end up returning the child BaseURL multiple times.\n // We need to determine a way to remove these duplicates in a safe way.\n // See: https://github.com/videojs/mpd-parser/pull/17#discussion_r162750527\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls))),\n eventStream: flatten(periods.map(toEventStream))\n };\n};\n\nconst stringToMpdXml = manifestString => {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n const parser = new DOMParser();\n let xml;\n let 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 throws 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\nconst parseUTCTimingScheme = mpd => {\n const UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n const 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\nconst 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\nconst parse = (manifestString, options = {}) => {\n const parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n const playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n contentSteering: parsedManifestInfo.contentSteeringInfo,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest,\n eventStream: parsedManifestInfo.eventStream\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\nconst parseUTCTiming = manifestString => parseUTCTimingScheme(stringToMpdXml(manifestString));\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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","function _extends() {\n return (module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _extends.apply(null, 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","'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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DestinationVideo.vue?vue&type=style&index=0&id=2df354d2&prod&scoped=true&lang=less\"","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","\"use strict\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar InterceptorsStorage = /*#__PURE__*/function () {\n function InterceptorsStorage() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n }\n\n var _proto = InterceptorsStorage.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n };\n\n _proto.addInterceptor = function addInterceptor(type, interceptor) {\n if (!this.typeToInterceptorsMap_.has(type)) {\n this.typeToInterceptorsMap_.set(type, new Set());\n }\n\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet.has(interceptor)) {\n // already have this interceptor\n return false;\n }\n\n interceptorsSet.add(interceptor);\n return true;\n };\n\n _proto.removeInterceptor = function removeInterceptor(type, interceptor) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet && interceptorsSet.has(interceptor)) {\n interceptorsSet.delete(interceptor);\n return true;\n }\n\n return false;\n };\n\n _proto.clearInterceptorsByType = function clearInterceptorsByType(type) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (!interceptorsSet) {\n return false;\n }\n\n this.typeToInterceptorsMap_.delete(type);\n this.typeToInterceptorsMap_.set(type, new Set());\n return true;\n };\n\n _proto.clear = function clear() {\n if (!this.typeToInterceptorsMap_.size) {\n return false;\n }\n\n this.typeToInterceptorsMap_ = new Map();\n return true;\n };\n\n _proto.getForType = function getForType(type) {\n return this.typeToInterceptorsMap_.get(type) || new Set();\n };\n\n _proto.execute = function execute(type, payload) {\n var interceptors = this.getForType(type);\n\n for (var _iterator = _createForOfIteratorHelperLoose(interceptors), _step; !(_step = _iterator()).done;) {\n var interceptor = _step.value;\n\n try {\n payload = interceptor(payload);\n } catch (e) {//ignore\n }\n }\n\n return payload;\n };\n\n return InterceptorsStorage;\n}();\n\nmodule.exports = InterceptorsStorage;","/**\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"video-popup\"},[_c('div',{staticClass:\"video-content\"},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isShowVideo),expression:\"!isShowVideo\"}],attrs:{\"src\":_vm.coverUrl,\"alt\":\"\"}}),(_vm.isAndroid)?[_c('video',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowVideo),expression:\"isShowVideo\"}],attrs:{\"id\":`myVideo_${_vm.shorexBannerIndex}`,\"controls\":false,\"src\":_vm.videoUrl,\"poster\":_vm.coverUrl,\"controlsList\":\"nodownload noremoteplayback noplaybackrate\",\"disablePictureInPicture\":\"\"},on:{\"fullscreenchange\":_vm.handleFullscreenChange}})]:[_c('video',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowVideo),expression:\"isShowVideo\"}],staticClass:\"video-js vjs-default-skin vjs-big-play-centered\",attrs:{\"id\":`playerId_${_vm.shorexBannerIndex}`,\"controlsList\":\"nodownload noremoteplayback noplaybackrate\",\"disablePictureInPicture\":\"\"}},[_c('source',{attrs:{\"src\":_vm.videoUrl}})])],_c('div',{staticClass:\"videoPlayBtn\",on:{\"click\":function($event){$event.stopPropagation();return _vm.onChangeVideoPlay.apply(null, arguments)}}},[_c('img',{attrs:{\"src\":\"https://resource.rcclchina.com.cn/paySuccess/videoBtn.png\",\"alt\":\"\"}})])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./DestinationVideo.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!./DestinationVideo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DestinationVideo.vue?vue&type=template&id=2df354d2&scoped=true\"\nimport script from \"./DestinationVideo.vue?vue&type=script&lang=js\"\nexport * from \"./DestinationVideo.vue?vue&type=script&lang=js\"\nimport style0 from \"./DestinationVideo.vue?vue&type=style&index=0&id=2df354d2&prod&scoped=true&lang=less\"\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 \"2df354d2\",\n null\n \n)\n\nexport default component.exports","/**\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 7.1.0 @license Apache-2.0 */\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * @file m3u8/line-stream.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\nclass LineStream extends Stream {\n constructor() {\n super();\n this.buffer = '';\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n push(data) {\n let 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}\n\nconst TAB = String.fromCharCode(0x09);\n\nconst parseByterange = function (byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n const match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n const 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\nconst attributeSeparator = function () {\n const key = '[^=]*';\n const value = '\"[^\"]*\"|[^,]*';\n const 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\nconst parseAttributes = function (attributes) {\n const result = {};\n\n if (!attributes) {\n return result;\n } // split the string using attributes as the separator\n\n\n const attrs = attributes.split(attributeSeparator());\n let i = attrs.length;\n let 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\nclass ParseStream extends Stream {\n constructor() {\n super();\n this.customParsers = [];\n this.tagMappers = [];\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 push(line) {\n let match;\n let 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 const newLines = this.tagMappers.reduce((acc, mapper) => {\n const 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(newLine => {\n for (let i = 0; i < this.customParsers.length; i++) {\n if (this.customParsers[i].call(this, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n this.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\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 this.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 const 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 this.trigger('data', event);\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 const split = event.attributes.RESOLUTION.split('x');\n const 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 this.trigger('data', event);\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 this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 this.trigger('data', event);\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 const 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 this.trigger('data', event);\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 this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DATERANGE:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'daterange'\n };\n event.attributes = parseAttributes(match[1]);\n ['ID', 'CLASS'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = String(event.attributes[key]);\n }\n });\n ['START-DATE', 'END-DATE'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = new Date(event.attributes[key]);\n }\n });\n ['DURATION', 'PLANNED-DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['END-ON-NEXT'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/i.test(event.attributes[key]);\n }\n });\n ['SCTE35-CMD', ' SCTE35-OUT', 'SCTE35-IN'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = event.attributes[key].toString(16);\n }\n });\n const clientAttributePattern = /^X-([A-Z]+-)+[A-Z]+$/;\n\n for (const key in event.attributes) {\n if (!clientAttributePattern.test(key)) {\n continue;\n }\n\n const isHexaDecimal = /[0-9A-Fa-f]{6}/g.test(event.attributes[key]);\n const isDecimalFloating = /^\\d+(\\.\\d+)?$/.test(event.attributes[key]);\n event.attributes[key] = isHexaDecimal ? event.attributes[key].toString(16) : isDecimalFloating ? parseFloat(event.attributes[key]) : String(event.attributes[key]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-INDEPENDENT-SEGMENTS/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'independent-segments'\n });\n return;\n }\n\n match = /^#EXT-X-CONTENT-STEERING:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'content-steering'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n } // unknown tag type\n\n\n this.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 addParser({\n expression,\n customType,\n dataParser,\n segment\n }) {\n if (typeof dataParser !== 'function') {\n dataParser = line => line;\n }\n\n this.customParsers.push(line => {\n const match = expression.exec(line);\n\n if (match) {\n this.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType,\n segment\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 addTagMapper({\n expression,\n map\n }) {\n const 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}\n\nconst camelCase = str => str.toLowerCase().replace(/-(\\w)/g, a => a[1].toUpperCase());\n\nconst camelCaseKeys = function (attributes) {\n const 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\nconst setHoldBack = function (manifest) {\n const {\n serverControl,\n targetDuration,\n partTargetDuration\n } = manifest;\n\n if (!serverControl) {\n return;\n }\n\n const tag = '#EXT-X-SERVER-CONTROL';\n const hb = 'holdBack';\n const phb = 'partHoldBack';\n const minTargetDuration = targetDuration && targetDuration * 3;\n const 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\nclass Parser extends Stream {\n constructor() {\n super();\n this.lineStream = new LineStream();\n this.parseStream = new ParseStream();\n this.lineStream.pipe(this.parseStream);\n this.lastProgramDateTime = null;\n /* eslint-disable consistent-this */\n\n const self = this;\n /* eslint-enable consistent-this */\n\n const uris = [];\n let currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n let currentMap; // if specified, the active decryption key\n\n let key;\n let hasParts = false;\n\n const noop = function () {};\n\n const 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 const widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n let currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n dateRanges: [],\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 let lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n let lastPartByterangeEnd = 0;\n const dateRangeTags = {};\n this.on('end', () => {\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 this.parseStream.on('data', function (entry) {\n let mediaGroup;\n let rendition;\n ({\n tag() {\n // switch based on the tag type\n (({\n version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n\n 'allow-cache'() {\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\n byterange() {\n const 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\n endlist() {\n this.manifest.endList = true;\n },\n\n 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.title) {\n currentUri.title = entry.title;\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\n 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 const 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\n 'media-sequence'() {\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\n 'discontinuity-sequence'() {\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\n 'playlist-type'() {\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\n 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\n 'stream-inf'() {\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\n 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 const 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\n discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n\n 'program-date-time'() {\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 const {\n lastProgramDateTime\n } = this;\n this.lastProgramDateTime = new Date(entry.dateTimeString).getTime(); // We should extrapolate Program Date Time backward only during first program date time occurrence.\n // Once we have at least one program date time point, we can always extrapolate it forward using lastProgramDateTime reference.\n\n if (lastProgramDateTime === null) {\n // Extrapolate Program Date Time backward\n // Since it is first program date time occurrence we're assuming that\n // all this.manifest.segments have no program date time info\n this.manifest.segments.reduceRight((programDateTime, segment) => {\n segment.programDateTime = programDateTime - segment.duration * 1000;\n return segment.programDateTime;\n }, this.lastProgramDateTime);\n }\n },\n\n 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\n 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\n 'cue-out'() {\n currentUri.cueOut = entry.data;\n },\n\n 'cue-out-cont'() {\n currentUri.cueOutCont = entry.data;\n },\n\n 'cue-in'() {\n currentUri.cueIn = entry.data;\n },\n\n 'skip'() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n\n 'part'() {\n hasParts = true; // parts are always specifed before a segment\n\n const segmentIndex = this.manifest.segments.length;\n const 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 const 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((r, i) => {\n if (!r.hasOwnProperty('lastPart')) {\n this.trigger('warn', {\n message: `#EXT-X-RENDITION-REPORT #${i} lacks required attribute(s): LAST-PART`\n });\n }\n });\n }\n },\n\n 'server-control'() {\n const 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\n 'preload-hint'() {\n // parts are always specifed before a segment\n const segmentIndex = this.manifest.segments.length;\n const hint = camelCaseKeys(entry.attributes);\n const 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 const 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 (let i = 0; i < currentUri.preloadHints.length - 1; i++) {\n const 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\n 'rendition-report'() {\n const report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n const index = this.manifest.renditionReports.length - 1;\n const 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\n 'part-inf'() {\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\n 'daterange'() {\n this.manifest.dateRanges.push(camelCaseKeys(entry.attributes));\n const index = this.manifest.dateRanges.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-DATERANGE #${index}`, entry.attributes, ['ID', 'START-DATE']);\n const dateRange = this.manifest.dateRanges[index];\n\n if (dateRange.endDate && dateRange.startDate && new Date(dateRange.endDate) < new Date(dateRange.startDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE END-DATE must be equal to or later than the value of the START-DATE'\n });\n }\n\n if (dateRange.duration && dateRange.duration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE DURATION must not be negative'\n });\n }\n\n if (dateRange.plannedDuration && dateRange.plannedDuration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE PLANNED-DURATION must not be negative'\n });\n }\n\n const endOnNextYes = !!dateRange.endOnNext;\n\n if (endOnNextYes && !dateRange.class) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must have a CLASS attribute'\n });\n }\n\n if (endOnNextYes && (dateRange.duration || dateRange.endDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must not contain DURATION or END-DATE attributes'\n });\n }\n\n if (dateRange.duration && dateRange.endDate) {\n const startDate = dateRange.startDate;\n const newDateInSeconds = startDate.getTime() + dateRange.duration * 1000;\n this.manifest.dateRanges[index].endDate = new Date(newDateInSeconds);\n }\n\n if (!dateRangeTags[dateRange.id]) {\n dateRangeTags[dateRange.id] = dateRange;\n } else {\n for (const attribute in dateRangeTags[dateRange.id]) {\n if (!!dateRange[attribute] && JSON.stringify(dateRangeTags[dateRange.id][attribute]) !== JSON.stringify(dateRange[attribute])) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE tags with the same ID in a playlist must have the same attributes values'\n });\n break;\n }\n } // if tags with the same ID do not have conflicting attributes, merge them\n\n\n const dateRangeWithSameId = this.manifest.dateRanges.findIndex(dateRangeToFind => dateRangeToFind.id === dateRange.id);\n this.manifest.dateRanges[dateRangeWithSameId] = _extends(this.manifest.dateRanges[dateRangeWithSameId], dateRange);\n dateRangeTags[dateRange.id] = _extends(dateRangeTags[dateRange.id], dateRange); // after merging, delete the duplicate dateRange that was added last\n\n this.manifest.dateRanges.pop();\n }\n },\n\n 'independent-segments'() {\n this.manifest.independentSegments = true;\n },\n\n 'content-steering'() {\n this.manifest.contentSteering = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-CONTENT-STEERING', entry.attributes, ['SERVER-URI']);\n }\n\n })[entry.tagType] || noop).call(self);\n },\n\n 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; // Once we have at least one program date time we can always extrapolate it forward\n\n if (this.lastProgramDateTime !== null) {\n currentUri.programDateTime = this.lastProgramDateTime;\n this.lastProgramDateTime += currentUri.duration * 1000;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n\n comment() {// comments are not important for playback\n },\n\n 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\n })[entry.type].call(self);\n });\n }\n\n warnOnMissingAttributes_(identifier, attributes, required) {\n const 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 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 end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n\n if (this.manifest.dateRanges.length && this.lastProgramDateTime === null) {\n this.trigger('warn', {\n message: 'A playlist with EXT-X-DATERANGE tag must contain atleast one EXT-X-PROGRAM-DATE-TIME tag'\n });\n }\n\n this.lastProgramDateTime = null;\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.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 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 addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n }\n\n}\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};","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\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$1 from 'global/document';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, parseCodecs, muxerSupportsCodec, browserSupportsCodec, translateLegacyCodec, codecsFromDefault, isAudioCodec, getMimeForCodec } 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';\n\nvar version$6 = \"8.16.1\";\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 */\nconst hooks_ = {};\n\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecycle 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 */\nconst hooks = function (type, fn) {\n hooks_[type] = hooks_[type] || [];\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n return hooks_[type];\n};\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 */\nconst hook = function (type, fn) {\n hooks(type, fn);\n};\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 */\nconst removeHook = function (type, fn) {\n const index = hooks(type).indexOf(fn);\n if (index <= -1) {\n return false;\n }\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\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 */\nconst hookOnce = function (type, fn) {\n hooks(type, [].concat(fn).map(original => {\n const wrapper = (...args) => {\n removeHook(type, wrapper);\n return original(...args);\n };\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n */\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 */\nconst FullscreenApi = {\n prefixed: true\n};\n\n// browser API methods\nconst apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen']];\nconst specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document$1) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i = 0; i < browserApi.length; i++) {\n FullscreenApi[specApi[i]] = browserApi[i];\n }\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\n// This is the private tracking variable for the logging history.\nlet history = [];\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} name\n * The name of the console method to use.\n *\n * @param {Object} log\n * The arguments to be passed to the matching console method.\n *\n * @param {string} [styles]\n * styles for name\n */\nconst LogByTypeFactory = (name, log, styles) => (type, level, args) => {\n const lvl = log.levels[level];\n const lvlRegExp = new RegExp(`^(${lvl})$`);\n let resultName = name;\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 }\n if (styles) {\n resultName = `%c${name}`;\n args.unshift(styles);\n }\n\n // Add console prefix after adding to history.\n args.unshift(resultName + ':');\n\n // Add a clone of the args at this point to history.\n if (history) {\n history.push([].concat(args));\n\n // only store 1000 history entries\n const splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n }\n\n // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n if (!window$1.console) {\n return;\n }\n\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 let fn = window$1.console[type];\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 }\n\n // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n fn[Array.isArray(args) ? 'apply' : 'call'](window$1.console, args);\n};\nfunction createLogger$1(name, delimiter = ':', styles = '') {\n // This is the private tracking variable for logging level.\n let level = 'info';\n\n // the curried logByType bound to the specific log and history\n let logByType;\n\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 * *[]\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 {...*} args\n * One or more messages or objects that should be logged.\n */\n function log(...args) {\n logByType('log', level, args);\n }\n\n // This is the logByType helper that the logging methods below use\n logByType = LogByTypeFactory(name, log, styles);\n\n /**\n * Create a new subLogger which chains the old name to the new name.\n *\n * For example, doing `mylogger = 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} subName\n * The name to add call the new logger\n * @param {string} [subDelimiter]\n * Optional delimiter\n * @param {string} [subStyles]\n * Optional styles\n * @return {Object}\n */\n log.createLogger = (subName, subDelimiter, subStyles) => {\n const resultDelimiter = subDelimiter !== undefined ? subDelimiter : delimiter;\n const resultStyles = subStyles !== undefined ? subStyles : styles;\n const resultName = `${name} ${resultDelimiter} ${subName}`;\n return createLogger$1(resultName, resultDelimiter, resultStyles);\n };\n\n /**\n * Create a new logger.\n *\n * @param {string} newName\n * The name for the new logger\n * @param {string} [newDelimiter]\n * Optional delimiter\n * @param {string} [newStyles]\n * Optional styles\n * @return {Object}\n */\n log.createNewLogger = (newName, newDelimiter, newStyles) => {\n return createLogger$1(newName, newDelimiter, newStyles);\n };\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 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 /**\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 {'all'|'debug'|'info'|'warn'|'error'|'off'} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n log.level = 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 level = lvl;\n }\n return level;\n };\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 log.history = () => 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 log.history.filter = fname => {\n return (history || []).filter(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 /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n log.history.clear = () => {\n if (history) {\n history.length = 0;\n }\n };\n\n /**\n * Disable history tracking if it is currently enabled.\n */\n log.history.disable = () => {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n\n /**\n * Enable history tracking if it is currently disabled.\n */\n log.history.enable = () => {\n if (history === null) {\n history = [];\n }\n };\n\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as an error\n */\n log.error = (...args) => logByType('error', level, args);\n\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as a warning.\n */\n log.warn = (...args) => 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 {...*} args\n * One or more messages or objects that should be logged as debug.\n */\n log.debug = (...args) => logByType('debug', level, args);\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nconst log$1 = createLogger$1('VIDEOJS');\nconst createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {*} 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 {*} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {*} 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 {*}\n * The new accumulated value.\n */\nconst toString = Object.prototype.toString;\n\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 */\nconst keys = function (object) {\n return isObject(object) ? Object.keys(object) : [];\n};\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 */\nfunction each(object, fn) {\n keys(object).forEach(key => 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 {*} [initial = 0]\n * Starting value\n *\n * @return {*}\n * The final accumulated value.\n */\nfunction reduce(object, fn, initial = 0) {\n return keys(object).reduce((accum, key) => fn(accum, object[key], key), initial);\n}\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 */\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\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 */\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\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 * @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 */\nfunction merge$1(...sources) {\n const result = {};\n sources.forEach(source => {\n if (!source) {\n return;\n }\n each(source, (value, key) => {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n result[key] = merge$1(result[key], value);\n });\n });\n return result;\n}\n\n/**\n * Returns an array of values for a given object\n *\n * @param {Object} source - target object\n * @return {Array} - object values\n */\nfunction values(source = {}) {\n const result = [];\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * Object.defineProperty but \"lazy\", which means that the value is only set after\n * it is retrieved the first time, rather than being set right away.\n *\n * @param {Object} obj the object to set the property on\n * @param {string} key the key for the property to set\n * @param {Function} getValue the function used to get the value when it is needed.\n * @param {boolean} setter whether a setter should be allowed or not\n */\nfunction defineLazyProperty(obj, key, getValue, setter = true) {\n const set = value => Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n writable: true\n });\n const options = {\n configurable: true,\n enumerable: true,\n get() {\n const value = getValue();\n set(value);\n return value;\n }\n };\n if (setter) {\n options.set = set;\n }\n return Object.defineProperty(obj, key, options);\n}\n\nvar Obj = /*#__PURE__*/Object.freeze({\n __proto__: null,\n each: each,\n reduce: reduce,\n isObject: isObject,\n isPlain: isPlain,\n merge: merge$1,\n values: values,\n defineLazyProperty: defineLazyProperty\n});\n\n/**\n * @file browser.js\n * @module browser\n */\n\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_IPOD = false;\n\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @type {string|null}\n */\nlet IOS_VERSION = null;\n\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_ANDROID = false;\n\n/**\n * The detected Android version - or `null` if not Android or indeterminable.\n *\n * @static\n * @type {number|string|null}\n */\nlet ANDROID_VERSION;\n\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_FIREFOX = false;\n\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_EDGE = false;\n\n/**\n * Whether or not this is any Chromium Browser\n *\n * @static\n * @type {Boolean}\n */\nlet IS_CHROMIUM = false;\n\n/**\n * Whether or not this is any Chromium browser that is not Edge.\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 * Deprecated, as the behaviour to not match Edge was to prevent Legacy Edge's UA matching.\n * IS_CHROMIUM should be used instead.\n * \"Chromium but not Edge\" could be explicitly tested with IS_CHROMIUM && !IS_EDGE\n *\n * @static\n * @deprecated\n * @type {Boolean}\n */\nlet IS_CHROME = false;\n\n/**\n * The detected Chromium version - or `null`.\n *\n * @static\n * @type {number|null}\n */\nlet CHROMIUM_VERSION = null;\n\n/**\n * The detected Google Chrome version - or `null`.\n * This has always been the _Chromium_ version, i.e. would return on Chromium Edge.\n * Deprecated, use CHROMIUM_VERSION instead.\n *\n * @static\n * @deprecated\n * @type {number|null}\n */\nlet CHROME_VERSION = null;\n\n/**\n * Whether or not this is a Chromecast receiver application.\n *\n * @static\n * @type {Boolean}\n */\nconst IS_CHROMECAST_RECEIVER = Boolean(window$1.cast && window$1.cast.framework && window$1.cast.framework.CastReceiverContext);\n\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @deprecated\n * @type {number|null}\n */\nlet IE_VERSION = null;\n\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_SAFARI = false;\n\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_WINDOWS = false;\n\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_IPAD = false;\n\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\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/\nlet IS_IPHONE = false;\n\n/**\n * Whether or not this is a Tizen device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_TIZEN = false;\n\n/**\n * Whether or not this is a WebOS device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_WEBOS = false;\n\n/**\n * Whether or not this is a Smart TV (Tizen or WebOS) device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_SMART_TV = false;\n\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch));\nconst UAD = window$1.navigator && window$1.navigator.userAgentData;\nif (UAD && UAD.platform && UAD.brands) {\n // If userAgentData is present, use it instead of userAgent to avoid warnings\n // Currently only implemented on Chromium\n // userAgentData does not expose Android version, so ANDROID_VERSION remains `null`\n\n IS_ANDROID = UAD.platform === 'Android';\n IS_EDGE = Boolean(UAD.brands.find(b => b.brand === 'Microsoft Edge'));\n IS_CHROMIUM = Boolean(UAD.brands.find(b => b.brand === 'Chromium'));\n IS_CHROME = !IS_EDGE && IS_CHROMIUM;\n CHROMIUM_VERSION = CHROME_VERSION = (UAD.brands.find(b => b.brand === 'Chromium') || {}).version || null;\n IS_WINDOWS = UAD.platform === 'Windows';\n}\n\n// If the browser is not Chromium, either userAgentData is not present which could be an old Chromium browser,\n// or it's a browser that has added userAgentData since that we don't have tests for yet. In either case,\n// the checks need to be made agiainst the regular userAgent string.\nif (!IS_CHROMIUM) {\n const USER_AGENT = window$1.navigator && window$1.navigator.userAgent || '';\n IS_IPOD = /iPod/i.test(USER_AGENT);\n IOS_VERSION = function () {\n const match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) {\n return match[1];\n }\n return null;\n }();\n IS_ANDROID = /Android/i.test(USER_AGENT);\n 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 const match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n if (!match) {\n return null;\n }\n const major = match[1] && parseFloat(match[1]);\n const minor = match[2] && parseFloat(match[2]);\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n return null;\n }();\n IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n IS_EDGE = /Edg/i.test(USER_AGENT);\n IS_CHROMIUM = /Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT);\n IS_CHROME = !IS_EDGE && IS_CHROMIUM;\n CHROMIUM_VERSION = CHROME_VERSION = function () {\n const match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n return null;\n }();\n IE_VERSION = function () {\n const result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n let version = result && parseFloat(result[1]);\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 return version;\n }();\n IS_TIZEN = /Tizen/i.test(USER_AGENT);\n IS_WEBOS = /Web0S/i.test(USER_AGENT);\n IS_SMART_TV = IS_TIZEN || IS_WEBOS;\n IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE && !IS_SMART_TV;\n IS_WINDOWS = /Windows/i.test(USER_AGENT);\n IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n}\n\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get IS_IPOD () { return IS_IPOD; },\n get IOS_VERSION () { return IOS_VERSION; },\n get IS_ANDROID () { return IS_ANDROID; },\n get ANDROID_VERSION () { return ANDROID_VERSION; },\n get IS_FIREFOX () { return IS_FIREFOX; },\n get IS_EDGE () { return IS_EDGE; },\n get IS_CHROMIUM () { return IS_CHROMIUM; },\n get IS_CHROME () { return IS_CHROME; },\n get CHROMIUM_VERSION () { return CHROMIUM_VERSION; },\n get CHROME_VERSION () { return CHROME_VERSION; },\n IS_CHROMECAST_RECEIVER: IS_CHROMECAST_RECEIVER,\n get IE_VERSION () { return IE_VERSION; },\n get IS_SAFARI () { return IS_SAFARI; },\n get IS_WINDOWS () { return IS_WINDOWS; },\n get IS_IPAD () { return IS_IPAD; },\n get IS_IPHONE () { return IS_IPHONE; },\n get IS_TIZEN () { return IS_TIZEN; },\n get IS_WEBOS () { return IS_WEBOS; },\n get IS_SMART_TV () { return IS_SMART_TV; },\n TOUCH_ENABLED: TOUCH_ENABLED,\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/**\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 */\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/**\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 */\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/**\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 */\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document$1 === window$1.document;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {*} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\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 */\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/**\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 */\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document$1[method](null);\n }\n if (isNonBlankString(context)) {\n context = document$1.querySelector(context);\n }\n const ctx = isEl(context) ? context : document$1;\n return ctx[method] && ctx[method](selector);\n };\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 {ContentDescriptor} [content]\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\nfunction createEl(tagName = 'div', properties = {}, attributes = {}, content) {\n const el = document$1.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n const val = properties[propName];\n\n // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n 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 if (content) {\n appendContent(el, content);\n }\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {HTMLElement} 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 */\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n return el;\n}\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 */\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\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 */\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n return element.classList.contains(classToCheck);\n}\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} classesToAdd\n * One or more class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\nfunction addClass(element, ...classesToAdd) {\n element.classList.add(...classesToAdd.reduce((prev, current) => prev.concat(current.split(/\\s+/)), []));\n return element;\n}\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} classesToRemove\n * One or more class name to remove.\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\nfunction removeClass(element, ...classesToRemove) {\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 element.classList.remove(...classesToRemove.reduce((prev, current) => prev.concat(current.split(/\\s+/)), []));\n return element;\n}\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 */\nfunction toggleClass(element, classToToggle, predicate) {\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n if (typeof predicate !== 'boolean') {\n predicate = undefined;\n }\n classToToggle.split(/\\s+/).forEach(className => element.classList.toggle(className, predicate));\n return element;\n}\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 */\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n const attrValue = attributes[attrName];\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/**\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 */\nfunction getAttributes(tag) {\n const obj = {};\n\n // 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 const knownBooleans = ['autoplay', 'controls', 'playsinline', 'loop', 'muted', 'default', 'defaultMuted'];\n if (tag && tag.attributes && tag.attributes.length > 0) {\n const attrs = tag.attributes;\n for (let i = attrs.length - 1; i >= 0; i--) {\n const attrName = attrs[i].name;\n /** @type {boolean|string} */\n let attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (knownBooleans.includes(attrName)) {\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 obj[attrName] = attrVal;\n }\n }\n return obj;\n}\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 */\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\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 */\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\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 */\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n\n/**\n * Attempt to block the ability to select text.\n */\nfunction blockTextSelection() {\n document$1.body.focus();\n document$1.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking.\n */\nfunction unblockTextSelection() {\n document$1.onselectstart = function () {\n return true;\n };\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 */\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n const rect = el.getBoundingClientRect();\n const result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(k => {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n return result;\n }\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 */\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 const width = el.offsetWidth;\n const height = el.offsetHeight;\n let left = 0;\n let top = 0;\n while (el.offsetParent && el !== document$1[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n return {\n left,\n top,\n width,\n height\n };\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 {Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\nfunction getPointerPosition(el, event) {\n const translated = {\n x: 0,\n y: 0\n };\n if (IS_IOS) {\n let item = el;\n while (item && item.nodeName.toLowerCase() !== 'html') {\n const transform = computedStyle(item, 'transform');\n if (/^matrix/.test(transform)) {\n const 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 const values = transform.slice(9, -1).split(/,\\s/).map(Number);\n translated.x += values[12];\n translated.y += values[13];\n }\n if (item.assignedSlot && item.assignedSlot.parentElement && window$1.WebKitCSSMatrix) {\n const transformValue = window$1.getComputedStyle(item.assignedSlot.parentElement).transform;\n const matrix = new window$1.WebKitCSSMatrix(transformValue);\n translated.x += matrix.m41;\n translated.y += matrix.m42;\n }\n item = item.parentNode || item.host;\n }\n }\n const position = {};\n const boxTarget = findPosition(event.target);\n const box = findPosition(el);\n const boxW = box.width;\n const boxH = box.height;\n let offsetY = event.offsetY - (box.top - boxTarget.top);\n let offsetX = event.offsetX - (box.left - boxTarget.left);\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\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/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {*} 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 */\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\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 */\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\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 * `Text` | A 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|Text|Array|Function} 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 {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 */\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 }\n\n // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n return (Array.isArray(content) ? content : [content]).map(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 if (isEl(value) || isTextNode(value)) {\n return value;\n }\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document$1.createTextNode(value);\n }\n }).filter(value => 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 {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(node => el.appendChild(node));\n return el;\n}\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 {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Check if an event was a single left click.\n *\n * @param {MouseEvent} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\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\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\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n\n return true;\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\n return true;\n }\n\n // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n // MacOS Sonoma trackpad when \"tap to click enabled\"\n if (event.type === 'mousedown' && event.button === 0 && event.buttons === 0) {\n return true;\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\n return false;\n }\n return true;\n}\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 */\nconst $ = createQuerier('querySelector');\n\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 */\nconst $$ = createQuerier('querySelectorAll');\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 * @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 */\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n if (typeof window$1.getComputedStyle === 'function') {\n let computedStyleValue;\n try {\n computedStyleValue = window$1.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n return '';\n}\n\n/**\n * Copy document style sheets to another window.\n *\n * @param {Window} win\n * The window element you want to copy the document style sheets to.\n *\n */\nfunction copyStyleSheetsToWindow(win) {\n [...document$1.styleSheets].forEach(styleSheet => {\n try {\n const cssRules = [...styleSheet.cssRules].map(rule => rule.cssText).join('');\n const style = document$1.createElement('style');\n style.textContent = cssRules;\n win.document.head.appendChild(style);\n } catch (e) {\n const link = document$1.createElement('link');\n link.rel = 'stylesheet';\n link.type = styleSheet.type;\n // For older Safari this has to be the string; on other browsers setting the MediaList works\n link.media = styleSheet.media.mediaText;\n link.href = styleSheet.href;\n win.document.head.appendChild(link);\n }\n });\n}\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 computedStyle: computedStyle,\n copyStyleSheetsToWindow: copyStyleSheetsToWindow\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 */\nlet _windowLoaded = false;\nlet videojs$1;\n\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\nconst autoSetup = function () {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n const vids = Array.prototype.slice.call(document$1.getElementsByTagName('video'));\n const audios = Array.prototype.slice.call(document$1.getElementsByTagName('audio'));\n const divs = Array.prototype.slice.call(document$1.getElementsByTagName('video-js'));\n const mediaEls = vids.concat(audios, divs);\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n for (let i = 0, e = mediaEls.length; i < e; i++) {\n const mediaEl = mediaEls[i];\n\n // Check if element exists, has getAttribute func.\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n const options = mediaEl.getAttribute('data-setup');\n\n // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n }\n\n // If getAttribute isn't defined, we need to wait for the DOM.\n } else {\n autoSetupTimeout(1);\n break;\n }\n }\n\n // No videos were found, so keep looping unless page is finished loading.\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\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 */\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n if (vjs) {\n videojs$1 = vjs;\n }\n window$1.setTimeout(autoSetup, wait);\n}\n\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window$1.removeEventListener('load', setWindowLoaded);\n}\nif (isReal()) {\n if (document$1.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/**\n * Create a DOM style 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 */\nconst createStyleElement = function (className) {\n const style = document$1.createElement('style');\n style.className = className;\n return style;\n};\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 */\nconst setTextContent = function (el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\n\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nvar DomData = new WeakMap();\n\n/**\n * @file guid.js\n * @module guid\n */\n\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\nconst _initialGuid = 3;\n\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\nlet _guid = _initialGuid;\n\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 */\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n\n/**\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 */\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n const data = DomData.get(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\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 }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData.delete(elem);\n }\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[]} types\n * Type of event to bind to.\n *\n * @param {Function} callback\n * Event listener.\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/**\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 */\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n\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 if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n const old = event || window$1.event;\n event = {};\n // 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\n // TODO: Probably best to create an allowlist of event props\n const deprecatedProps = ['layerX', 'layerY', 'keyLocation', 'path', 'webkitMovementX', 'webkitMovementY', 'mozPressure', 'mozInputSource'];\n for (const 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 (!deprecatedProps.includes(key)) {\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 }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document$1;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX !== null && event.clientX !== undefined) {\n const doc = document$1.documentElement;\n const body = document$1.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 }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\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;\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Whether passive event listeners are supported\n */\nlet _supportsPassive;\nconst supportsPassive = function () {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {\n // disregard\n }\n }\n return _supportsPassive;\n};\n\n/**\n * Touch events Chrome expects to be passive\n */\nconst passiveEvents = ['touchstart', 'touchmove'];\n\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 {Function} fn\n * Event listener.\n */\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n const data = DomData.get(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) {\n data.handlers = {};\n }\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n data.handlers[type].push(fn);\n if (!data.dispatcher) {\n data.disabled = false;\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n event = fixEvent(event);\n const handlers = data.handlers[event.type];\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n const handlersCopy = handlers.slice(0);\n for (let 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 if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n let options = false;\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\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/**\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 {Function} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\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 const data = DomData.get(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n const removeType = function (el, t) {\n data.handlers[t] = [];\n _cleanUpEvents(el, t);\n };\n\n // Are we removing all bound events?\n if (type === undefined) {\n for (const t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n return;\n }\n const handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) {\n return;\n }\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(elem, type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n _cleanUpEvents(elem, type);\n}\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 */\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 const elemData = DomData.has(elem) ? DomData.get(elem) : {};\n const parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n }\n\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\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 if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // 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 const targetData = DomData.get(event.target);\n\n // Checks if the target has a default action for this event.\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;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\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 */\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n const func = function () {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\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 */\nfunction any(elem, type, fn) {\n const func = function () {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n\n // multiple ons, but one off for everything\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 */\nconst UPDATE_REFRESH_INTERVAL = 30;\n\n/**\n * A private, internal-only function for changing the context of a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @private\n * @function\n * @param {*} 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 */\nconst bind_ = function (context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n // Create the new function that changes the context\n const bound = fn.bind(context);\n\n // 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 bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\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 */\nconst throttle = function (fn, wait) {\n let last = window$1.performance.now();\n const throttled = function (...args) {\n const now = window$1.performance.now();\n if (now - last >= wait) {\n fn(...args);\n last = now;\n }\n };\n return throttled;\n};\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 */\nconst debounce = function (func, wait, immediate, context = window$1) {\n let timeout;\n const cancel = () => {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n const debounced = function () {\n const self = this;\n const args = arguments;\n let later = function () {\n timeout = null;\n later = null;\n if (!immediate) {\n func.apply(self, args);\n }\n };\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n context.clearTimeout(timeout);\n timeout = context.setTimeout(later, wait);\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n return debounced;\n};\n\nvar Fn = /*#__PURE__*/Object.freeze({\n __proto__: null,\n UPDATE_REFRESH_INTERVAL: UPDATE_REFRESH_INTERVAL,\n bind_: bind_,\n throttle: throttle,\n debounce: debounce\n});\n\n/**\n * @file src/js/event-target.js\n */\nlet EVENT_MAP;\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 */\nclass EventTarget$2 {\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 {Function} fn\n * The function to call with `EventTarget`s\n */\n on(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n on(this, type, fn);\n this.addEventListener = ael;\n }\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 {Function} fn\n * The function to remove.\n */\n off(type, fn) {\n off(this, type, fn);\n }\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 {Function} fn\n * The function to be called once for each event name.\n */\n one(type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n one(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * This function will add an `event listener` that gets triggered only once and is\n * removed from all events. This is like adding an array of `event listener`s\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on all events the\n * first time it is triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n any(type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\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 trigger(event) {\n const type = event.type || event;\n\n // 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 if (typeof event === 'string') {\n event = {\n type\n };\n }\n event = fixEvent(event);\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n trigger(this, event);\n }\n queueTrigger(event) {\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n const type = event.type || event;\n let map = EVENT_MAP.get(this);\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n const oldTimeout = map.get(type);\n map.delete(type);\n window$1.clearTimeout(oldTimeout);\n const timeout = window$1.setTimeout(() => {\n map.delete(type);\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP.delete(this);\n }\n this.trigger(event);\n }, 0);\n map.set(type, timeout);\n }\n}\n\n/**\n * A Custom DOM event.\n *\n * @typedef {CustomEvent} 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 EventListener\n * @this {EventTarget}\n *\n * @param {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 * @protected\n */\nEventTarget$2.prototype.allowedEvents_ = {};\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 */\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\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 */\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\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 */\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\nconst objName = obj => {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n if (obj.name_) {\n return obj.name_;\n }\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n return typeof obj;\n};\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 */\nconst isEvented = object => object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(k => typeof object[k] === 'function');\n\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} target\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\nconst addEventedCallback = (target, callback) => {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n target.eventedCallbacks.push(callback);\n }\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 */\nconst isValidEventType = type =>\n// The regex here verifies that the `type` contains at least one non-\n// whitespace character.\ntypeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length;\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 */\nconst 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/**\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 */\nconst 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/**\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 */\nconst 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/**\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 */\nconst normalizeListenArgs = (self, args, fnName) => {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n const isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n let target;\n let type;\n let listener;\n if (isTargetingSelf) {\n target = self.eventBusEl_;\n\n // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n if (args.length >= 3) {\n args.shift();\n }\n [type, listener] = args;\n } else {\n [target, type, listener] = args;\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,\n target,\n type,\n listener\n };\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 */\nconst listen = (target, method, type, listener) => {\n validateTarget(target, target, method);\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\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 */\nconst 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(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'on');\n listen(target, 'on', type, listener);\n\n // If this object is listening to another evented object.\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n const removeListenerOnDispose = () => this.off(target, type, listener);\n\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 removeListenerOnDispose.guid = listener.guid;\n\n // 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 const removeRemoverOnTargetDispose = () => this.off('dispose', removeListenerOnDispose);\n\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 removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\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(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'one');\n\n // Targeting this evented object.\n if (isTargetingSelf) {\n listen(target, 'one', type, listener);\n\n // 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 listeners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n const wrapper = (...largs) => {\n this.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\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 wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\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(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'any');\n\n // Targeting this evented object.\n if (isTargetingSelf) {\n listen(target, 'any', type, listener);\n\n // Targeting another evented object.\n } else {\n const wrapper = (...largs) => {\n this.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\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 wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\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(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener);\n\n // Targeting another evented object.\n } else {\n const target = targetOrType;\n const type = typeOrListener;\n\n // Fail fast and in a meaningful way!\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off');\n\n // Ensure there's at least a guid, even if the function hasn't been used\n listener = bind_(this, listener);\n\n // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n this.off('dispose', listener);\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 * 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(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n const type = event && typeof event !== 'string' ? event.type : event;\n if (!isValidEventType(type)) {\n throw new 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 return trigger(this.eventBusEl_, event, hash);\n }\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 */\nfunction evented(target, options = {}) {\n const {\n eventBusKey\n } = options;\n\n // Set or create the eventBusEl_.\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(`The eventBusKey \"${eventBusKey}\" does not refer to an element.`);\n }\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n Object.assign(target, EventedMixin);\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(callback => {\n callback();\n });\n }\n\n // When any evented object is disposed, it removes all its listeners.\n target.on('dispose', () => {\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(() => {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\nconst 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 * 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(stateUpdates) {\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n let changes;\n each(stateUpdates, (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 this.state[key] = value;\n });\n\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 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,\n type: 'statechanged'\n });\n }\n return changes;\n }\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 */\nfunction stateful(target, defaultState) {\n Object.assign(target, StatefulMixin);\n\n // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n target.state = Object.assign({}, target.state, defaultState);\n\n // Auto-bind the `handleStateChanged` method of the target object if it exists.\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n return target;\n}\n\n/**\n * @file str.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 */\nconst toLowerCase = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => 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 */\nconst toTitleCase$1 = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => 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 */\nconst titleCaseEquals = function (str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\nvar Str = /*#__PURE__*/Object.freeze({\n __proto__: null,\n toLowerCase: toLowerCase,\n toTitleCase: toTitleCase$1,\n titleCaseEquals: titleCaseEquals\n});\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n\n/** @import Player from './player' */\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 */\nclass Component$1 {\n /**\n * A callback that is called when a component is ready. Does not have any\n * parameters and any callback value will be ignored.\n *\n * @callback 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 initialize 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 {ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n constructor(player, options, ready) {\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n this.isDisposed_ = false;\n\n // Hold the reference to the parent component via `addChild` method\n this.parentComponent_ = null;\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = merge$1({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = merge$1(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || options.el && options.el.id;\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n const id = player && player.id && player.id() || 'no_player';\n this.id_ = `${id}_component_${newGUID()}`;\n }\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n if (options.className && this.el_) {\n options.className.split(' ').forEach(c => this.addClass(c));\n }\n\n // Remove the placeholder event methods. If the component is evented, the\n // real methods are added next\n ['on', 'off', 'one', 'any', 'trigger'].forEach(fn => {\n this[fn] = undefined;\n });\n\n // if evented is anything except false, we want to mixin in evented\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 stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set();\n this.setIntervalIds_ = new Set();\n this.rafIds_ = new Set();\n this.namedRafs_ = new Map();\n this.clearingTimersOnDispose_ = false;\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\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 this.ready(ready);\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n // `on`, `off`, `one`, `any` and `trigger` are here so tsc includes them in definitions.\n // They are replaced or removed in the constructor\n\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 {Function} fn\n * The function to call with `EventTarget`s\n */\n on(type, fn) {}\n\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 {Function} [fn]\n * The function to remove. If not specified, all listeners managed by Video.js will be removed.\n */\n off(type, fn) {}\n\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 {Function} fn\n * The function to be called once for each event name.\n */\n one(type, fn) {}\n\n /**\n * This function will add an `event listener` that gets triggered only once and is\n * removed from all events. This is like adding an array of `event listener`s\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on all events the\n * first time it is triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n any(type, fn) {}\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|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 * @param {Object} [hash]\n * Optionally extra argument to pass through to an event listener\n */\n trigger(event, hash) {}\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 dispose(options = {}) {\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true;\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\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 this.el_ = null;\n }\n\n // remove reference to the player after disposing of the element\n this.player_ = null;\n }\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 isDisposed() {\n return Boolean(this.isDisposed_);\n }\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 player() {\n return this.player_;\n }\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:obj.merge}\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 options(obj) {\n if (!obj) {\n return this.options_;\n }\n this.options_ = merge$1(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n el() {\n return this.el_;\n }\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 createEl(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\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 localize(string, tokens, defaultValue = string) {\n const code = this.player_.language && this.player_.language();\n const languages = this.player_.languages && this.player_.languages();\n const language = languages && languages[code];\n const primaryCode = code && code.split('-')[0];\n const primaryLang = languages && languages[primaryCode];\n let localizedString = defaultValue;\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n const value = tokens[index - 1];\n let ret = value;\n if (typeof value === 'undefined') {\n ret = match;\n }\n return ret;\n });\n }\n return localizedString;\n }\n\n /**\n * Handles language change for the player in components. Should be overridden by sub-components.\n *\n * @abstract\n */\n handleLanguagechange() {}\n\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n id() {\n return this.id_;\n }\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 name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n children() {\n return this.children_;\n }\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 getChildById(id) {\n return this.childIndex_[id];\n }\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 getChild(name) {\n if (!name) {\n return;\n }\n return this.childNameIndex_[name];\n }\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 getDescendant(...names) {\n // flatten array argument into the main array\n names = names.reduce((acc, n) => acc.concat(n), []);\n let currentChild = this;\n for (let i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n return currentChild;\n }\n\n /**\n * Adds an SVG icon element to another element or component.\n *\n * @param {string} iconName\n * The name of icon. A list of all the icon names can be found at 'sandbox/svg-icons.html'\n *\n * @param {Element} [el=this.el()]\n * Element to set the title on. Defaults to the current Component's element.\n *\n * @return {Element}\n * The newly created icon element.\n */\n setIcon(iconName, el = this.el()) {\n // TODO: In v9 of video.js, we will want to remove font icons entirely.\n // This means this check, as well as the others throughout the code, and\n // the unecessary CSS for font icons, will need to be removed.\n // See https://github.com/videojs/video.js/pull/8260 as to which components\n // need updating.\n if (!this.player_.options_.experimentalSvgIcons) {\n return;\n }\n const xmlnsURL = 'http://www.w3.org/2000/svg';\n\n // The below creates an element in the format of:\n // ....\n const iconContainer = createEl('span', {\n className: 'vjs-icon-placeholder vjs-svg-icon'\n }, {\n 'aria-hidden': 'true'\n });\n const svgEl = document$1.createElementNS(xmlnsURL, 'svg');\n svgEl.setAttributeNS(null, 'viewBox', '0 0 512 512');\n const useEl = document$1.createElementNS(xmlnsURL, 'use');\n svgEl.appendChild(useEl);\n useEl.setAttributeNS(null, 'href', `#vjs-icon-${iconName}`);\n iconContainer.appendChild(svgEl);\n\n // Replace a pre-existing icon if one exists.\n if (this.iconIsSet_) {\n el.replaceChild(iconContainer, el.querySelector('.vjs-icon-placeholder'));\n } else {\n el.appendChild(iconContainer);\n }\n this.iconIsSet_ = true;\n return iconContainer;\n }\n\n /**\n * Add a child `Component` inside the current `Component`.\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 *\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 addChild(child, options = {}, index = this.children_.length) {\n let component;\n let componentName;\n\n // If child is a string, create component with options\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n const componentClassName = options.componentClass || componentName;\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n const ComponentClass = Component$1.getComponent(componentClassName);\n if (!ComponentClass) {\n throw new Error(`Component ${componentClassName} does not exist`);\n }\n\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 if (typeof ComponentClass !== 'function') {\n return null;\n }\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || component.name && toTitleCase$1(component.name());\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n let refNode = null;\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 this.contentEl().insertBefore(component.el(), refNode);\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\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 removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n if (!component || !this.children_) {\n return;\n }\n let childFound = false;\n for (let 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 if (!childFound) {\n return;\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 const compEl = component.el();\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n initChildren() {\n const children = this.options_.children;\n if (children) {\n // `this` is `parent`\n const parentOptions = this.options_;\n const handleAdd = child => {\n const name = child.name;\n let opts = child.opts;\n\n // 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 if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\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 opts.playerOptions = this.options_.playerOptions;\n\n // 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 const newChild = this.addChild(name, opts);\n if (newChild) {\n this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n let workingChildren;\n const Tech = Component$1.getComponent('Tech');\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n workingChildren\n // 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 return child === wchild.name;\n });\n })).map(child => {\n let name;\n let opts;\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n return {\n name,\n opts\n };\n }).filter(child => {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registered as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n const c = Component$1.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n\n /**\n * Builds the default DOM class name. Should be overridden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\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 * @param {ReadyCallback} fn\n * Function that gets called when the `Component` is ready.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ready(fn, sync = false) {\n if (!fn) {\n return;\n }\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\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 /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggered asynchronously\n this.setTimeout(function () {\n const readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {Event}\n */\n this.trigger('ready');\n }, 1);\n }\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 $(selector, context) {\n return $(selector, context || this.contentEl());\n }\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 $$(selector, context) {\n return $$(selector, context || this.contentEl());\n }\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 hasClass(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {...string} classesToAdd\n * One or more CSS class name to add.\n */\n addClass(...classesToAdd) {\n addClass(this.el_, ...classesToAdd);\n }\n\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {...string} classesToRemove\n * One or more CSS class name to remove.\n */\n removeClass(...classesToRemove) {\n removeClass(this.el_, ...classesToRemove);\n }\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 toggleClass(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n show() {\n this.removeClass('vjs-hidden');\n }\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 hide() {\n this.addClass('vjs-hidden');\n }\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 lockShowing() {\n this.addClass('vjs-lock-showing');\n }\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 unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\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 attribute 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 getAttribute(attribute) {\n return getAttribute(this.el_, attribute);\n }\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 setAttribute(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\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 removeAttribute(attribute) {\n removeAttribute(this.el_, attribute);\n }\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|undefined}\n * The width when getting, zero if there is no width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\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|undefined}\n * The height when getting, zero if there is no height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\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 dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\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|undefined}\n * The dimension when getting or 0 if unset\n */\n 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 }\n\n // Check if using css width/height (% or px) and adjust\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 }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {Event}\n */\n this.trigger('componentresize');\n }\n return;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n const val = this.el_.style[widthOrHeight];\n const pxIndex = val.indexOf('px');\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\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 return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\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 currentDimension(widthOrHeight) {\n let computedWidthOrHeight = 0;\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight);\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n\n // 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 if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n const rule = `offset${toTitleCase$1(widthOrHeight)}`;\n computedWidthOrHeight = this.el_[rule];\n }\n return computedWidthOrHeight;\n }\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 currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\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 currentWidth() {\n return this.currentDimension('width');\n }\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 currentHeight() {\n return this.currentDimension('height');\n }\n\n /**\n * Retrieves the position and size information of the component's element.\n *\n * @return {Object} An object with `boundingClientRect` and `center` properties.\n * - `boundingClientRect`: An object with properties `x`, `y`, `width`,\n * `height`, `top`, `right`, `bottom`, and `left`, representing\n * the bounding rectangle of the element.\n * - `center`: An object with properties `x` and `y`, representing\n * the center point of the element. `width` and `height` are set to 0.\n */\n getPositions() {\n const rect = this.el_.getBoundingClientRect();\n\n // Creating objects that mirror DOMRectReadOnly for boundingClientRect and center\n const boundingClientRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left\n };\n\n // Calculating the center position\n const center = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n width: 0,\n height: 0,\n top: rect.top + rect.height / 2,\n right: rect.left + rect.width / 2,\n bottom: rect.top + rect.height / 2,\n left: rect.left + rect.width / 2\n };\n return {\n boundingClientRect,\n center\n };\n }\n\n /**\n * Set the focus to this component\n */\n focus() {\n this.el_.focus();\n }\n\n /**\n * Remove the focus from this component\n */\n blur() {\n this.el_.blur();\n }\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 {KeyboardEvent} event\n * The `keydown` event that caused this function to be called.\n */\n 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, exclude also when spatialNavigation is enabled.\n if (event.key !== 'Tab' && !(this.player_.options_.playerOptions.spatialNavigation && this.player_.options_.playerOptions.spatialNavigation.enabled)) {\n event.stopPropagation();\n }\n this.player_.handleKeyDown(event);\n }\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 {KeyboardEvent} event\n * The event that caused this function to be called.\n */\n handleKeyPress(event) {\n this.handleKeyDown(event);\n }\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 * @protected\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 emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // 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 const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n let 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 };\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = window$1.performance.now();\n // Reset couldBeTap tracking\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 const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n const noTap = function () {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function (event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = window$1.performance.now() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\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 {MouseEvent}\n */\n this.trigger('tap');\n // 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 /**\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 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 }\n\n // listener for reporting that the user is active\n const report = bind_(this.player(), this.player().reportUserActivity);\n let touchHolding;\n this.on('touchstart', function () {\n report();\n // 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 this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n const touchEnd = function (event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\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 setTimeout(fn, timeout) {\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(() => {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_.delete(timeoutId);\n }\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\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 clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_.delete(timeoutId);\n window$1.clearTimeout(timeoutId);\n }\n return timeoutId;\n }\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 setInterval(fn, interval) {\n fn = bind_(this, fn);\n this.clearTimersOnDispose_();\n const intervalId = window$1.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an interval 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 clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_.delete(intervalId);\n window$1.clearInterval(intervalId);\n }\n return intervalId;\n }\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 requestAnimationFrame(fn) {\n this.clearTimersOnDispose_();\n\n // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n var id;\n fn = bind_(this, fn);\n id = window$1.requestAnimationFrame(() => {\n if (this.rafIds_.has(id)) {\n this.rafIds_.delete(id);\n }\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\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 requestNamedAnimationFrame(name, fn) {\n if (this.namedRafs_.has(name)) {\n return;\n }\n this.clearTimersOnDispose_();\n fn = bind_(this, fn);\n const id = this.requestAnimationFrame(() => {\n fn();\n if (this.namedRafs_.has(name)) {\n this.namedRafs_.delete(name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\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 cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_.delete(name);\n }\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 cancelAnimationFrame(id) {\n if (this.rafIds_.has(id)) {\n this.rafIds_.delete(id);\n window$1.cancelAnimationFrame(id);\n }\n return id;\n }\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 clearTimersOnDispose_() {\n if (this.clearingTimersOnDispose_) {\n return;\n }\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', () => {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(([idName, cancelName]) => {\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 this[idName].forEach((val, key) => this[cancelName](key));\n });\n this.clearingTimersOnDispose_ = false;\n });\n }\n\n /**\n * Decide whether an element is actually disabled or not.\n *\n * @function isActuallyDisabled\n * @param element {Node}\n * @return {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/semantics-other.html#concept-element-disabled}\n */\n getIsDisabled() {\n return Boolean(this.el_.disabled);\n }\n\n /**\n * Decide whether the element is expressly inert or not.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#expressly-inert}\n * @function isExpresslyInert\n * @param element {Node}\n * @return {boolean}\n */\n getIsExpresslyInert() {\n return this.el_.inert && !this.el_.ownerDocument.documentElement.inert;\n }\n\n /**\n * Determine whether or not this component can be considered as focusable component.\n *\n * @param {HTMLElement} el - The HTML element representing the component.\n * @return {boolean}\n * If the component can be focused, will be `true`. Otherwise, `false`.\n */\n getIsFocusable(el) {\n const element = el || this.el_;\n return element.tabIndex >= 0 && !(this.getIsDisabled() || this.getIsExpresslyInert());\n }\n\n /**\n * Determine whether or not this component is currently visible/enabled/etc...\n *\n * @param {HTMLElement} el - The HTML element representing the component.\n * @return {boolean}\n * If the component can is currently visible & enabled, will be `true`. Otherwise, `false`.\n */\n getIsAvailableToBeFocused(el) {\n /**\n * Decide the style property of this element is specified whether it's visible or not.\n *\n * @function isVisibleStyleProperty\n * @param element {CSSStyleDeclaration}\n * @return {boolean}\n */\n function isVisibleStyleProperty(element) {\n const elementStyle = window$1.getComputedStyle(element, null);\n const thisVisibility = elementStyle.getPropertyValue('visibility');\n const thisDisplay = elementStyle.getPropertyValue('display');\n const invisibleStyle = ['hidden', 'collapse'];\n return thisDisplay !== 'none' && !invisibleStyle.includes(thisVisibility);\n }\n\n /**\n * Decide whether the element is being rendered or not.\n * 1. If an element has the style as \"visibility: hidden | collapse\" or \"display: none\", it is not being rendered.\n * 2. If an element has the style as \"opacity: 0\", it is not being rendered.(that is, invisible).\n * 3. If width and height of an element are explicitly set to 0, it is not being rendered.\n * 4. If a parent element is hidden, an element itself is not being rendered.\n * (CSS visibility property and display property are inherited.)\n *\n * @see {@link https://html.spec.whatwg.org/multipage/rendering.html#being-rendered}\n * @function isBeingRendered\n * @param element {Node}\n * @return {boolean}\n */\n function isBeingRendered(element) {\n if (!isVisibleStyleProperty(element.parentElement)) {\n return false;\n }\n if (!isVisibleStyleProperty(element) || element.style.opacity === '0' || window$1.getComputedStyle(element).height === '0px' || window$1.getComputedStyle(element).width === '0px') {\n return false;\n }\n return true;\n }\n\n /**\n * Determine if the element is visible for the user or not.\n * 1. If an element sum of its offsetWidth, offsetHeight, height and width is less than 1 is not visible.\n * 2. If elementCenter.x is less than is not visible.\n * 3. If elementCenter.x is more than the document's width is not visible.\n * 4. If elementCenter.y is less than 0 is not visible.\n * 5. If elementCenter.y is the document's height is not visible.\n *\n * @function isVisible\n * @param element {Node}\n * @return {boolean}\n */\n function isVisible(element) {\n if (element.offsetWidth + element.offsetHeight + element.getBoundingClientRect().height + element.getBoundingClientRect().width === 0) {\n return false;\n }\n\n // Define elementCenter object with props of x and y\n // x: Left position relative to the viewport plus element's width (no margin) divided between 2.\n // y: Top position relative to the viewport plus element's height (no margin) divided between 2.\n const elementCenter = {\n x: element.getBoundingClientRect().left + element.offsetWidth / 2,\n y: element.getBoundingClientRect().top + element.offsetHeight / 2\n };\n if (elementCenter.x < 0) {\n return false;\n }\n if (elementCenter.x > (document$1.documentElement.clientWidth || window$1.innerWidth)) {\n return false;\n }\n if (elementCenter.y < 0) {\n return false;\n }\n if (elementCenter.y > (document$1.documentElement.clientHeight || window$1.innerHeight)) {\n return false;\n }\n let pointContainer = document$1.elementFromPoint(elementCenter.x, elementCenter.y);\n while (pointContainer) {\n if (pointContainer === element) {\n return true;\n }\n if (pointContainer.parentNode) {\n pointContainer = pointContainer.parentNode;\n } else {\n return false;\n }\n }\n }\n\n // If no DOM element was passed as argument use this component's element.\n if (!el) {\n el = this.el();\n }\n\n // If element is visible, is being rendered & either does not have a parent element or its tabIndex is not negative.\n if (isVisible(el) && isBeingRendered(el) && (!el.parentElement || el.tabIndex >= 0)) {\n return true;\n }\n return 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 static 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 const Tech = Component$1.getComponent('Tech');\n\n // We need to make sure this check is only done if Tech has been registered.\n const isTech = Tech && Tech.isTech(ComponentToRegister);\n const isComp = Component$1 === ComponentToRegister || Component$1.prototype.isPrototypeOf(ComponentToRegister.prototype);\n if (isTech || !isComp) {\n let reason;\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n throw new Error(`Illegal component, \"${name}\"; ${reason}.`);\n }\n name = toTitleCase$1(name);\n if (!Component$1.components_) {\n Component$1.components_ = {};\n }\n const Player = Component$1.getComponent('Player');\n if (name === 'Player' && Player && Player.players) {\n const players = Player.players;\n const playerNames = Object.keys(players);\n\n // 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 if (players && playerNames.length > 0 && playerNames.map(pname => players[pname]).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n Component$1.components_[name] = ComponentToRegister;\n Component$1.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\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 {typeof Component}\n * The `Component` that got registered under the given name.\n */\n static getComponent(name) {\n if (!name || !Component$1.components_) {\n return;\n }\n return Component$1.components_[name];\n }\n}\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time.js\n * @module time\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time, which mimics {@link TimeRanges}.\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~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is non-numeric or out of bounds (0-${maxIndex}).`);\n }\n}\n\n/**\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 */\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\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 * @return {TimeRange}\n */\nfunction createTimeRangesObj(ranges) {\n let timeRangesObj;\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start() {\n throw new Error('This TimeRanges object is empty');\n },\n 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 if (window$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.Symbol.iterator] = () => (ranges || []).values();\n }\n return timeRangesObj;\n}\n\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n *\n * @return {TimeRange}\n */\nfunction createTimeRanges$1(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS. Supplying a guide (in\n * seconds) will force a number of leading zeros to cover the length of the\n * guide.\n *\n * @private\n * @param {number} seconds\n * Number of seconds to be turned into a string\n *\n * @param {number} guide\n * Number (in seconds) to model the string after\n *\n * @return {string}\n * Time formatted as H:MM:SS or M:SS\n */\nconst defaultImplementation = function (seconds, guide) {\n seconds = seconds < 0 ? 0 : seconds;\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = h > 0 || gh > 0 ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = ((h || gm >= 10) && m < 10 ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = s < 10 ? '0' + s : s;\n return h + m + s;\n};\n\n// Internal pointer to the current implementation.\nlet implementation = defaultImplementation;\n\n/**\n * Replaces the default formatTime implementation with a custom implementation.\n *\n * @param {Function} customImplementation\n * A function which will be used in place of the default formatTime\n * implementation. Will receive the current time in seconds and the\n * guide (in seconds) as arguments.\n */\nfunction setFormatTime(customImplementation) {\n implementation = customImplementation;\n}\n\n/**\n * Resets formatTime to the default implementation.\n */\nfunction resetFormatTime() {\n implementation = defaultImplementation;\n}\n\n/**\n * Delegates to either the default time formatting function or a custom\n * function supplied via `setFormatTime`.\n *\n * Formats seconds as a time string (H:MM:SS or M:SS). Supplying a\n * guide (in seconds) will force a number of leading zeros to cover the\n * length of the guide.\n *\n * @example formatTime(125, 600) === \"02:05\"\n * @param {number} seconds\n * Number of seconds to be turned into a string\n *\n * @param {number} guide\n * Number (in seconds) to model the string after\n *\n * @return {string}\n * Time formatted as H:MM:SS or M:SS\n */\nfunction formatTime(seconds, guide = seconds) {\n return implementation(seconds, guide);\n}\n\nvar Time = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createTimeRanges: createTimeRanges$1,\n createTimeRange: createTimeRanges$1,\n setFormatTime: setFormatTime,\n resetFormatTime: resetFormatTime,\n formatTime: formatTime\n});\n\n/**\n * @file buffer.js\n * @module buffer\n */\n\n/** @import { TimeRange } from './time' */\n\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRanges` 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 */\nfunction bufferedPercent(buffered, duration) {\n let bufferedDuration = 0;\n let start;\n let end;\n if (!duration) {\n return 0;\n }\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges$1(0, 0);\n }\n for (let i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n bufferedDuration += end - start;\n }\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\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 */\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 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 Object.assign(this, value);\n }\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\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 */\nMediaError.prototype.message = '';\n\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 */\nMediaError.prototype.status = null;\n\n/**\n * An object containing an error type, as well as other information regarding the error.\n *\n * @typedef {{errorType: string, [key: string]: any}} ErrorMetadata\n */\n\n/**\n * An optional object to give more detail about the error. This can be used to give\n * a higher level of specificity to an error versus the more generic MediaError codes.\n * `metadata` expects an `errorType` string that should align with the values from videojs.Error.\n *\n * @type {ErrorMetadata}\n */\nMediaError.prototype.metadata = null;\n\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 */\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\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};\n\n/**\n * W3C error code for any custom error.\n *\n * @member MediaError#MEDIA_ERR_CUSTOM\n * @constant {number}\n * @default 0\n */\nMediaError.MEDIA_ERR_CUSTOM = 0;\n\n/**\n * W3C error code for any custom error.\n *\n * @member MediaError.MEDIA_ERR_CUSTOM\n * @constant {number}\n * @default 0\n */\nMediaError.prototype.MEDIA_ERR_CUSTOM = 0;\n\n/**\n * W3C error code for media error aborted.\n *\n * @member MediaError#MEDIA_ERR_ABORTED\n * @constant {number}\n * @default 1\n */\nMediaError.MEDIA_ERR_ABORTED = 1;\n\n/**\n * W3C error code for media error aborted.\n *\n * @member MediaError.MEDIA_ERR_ABORTED\n * @constant {number}\n * @default 1\n */\nMediaError.prototype.MEDIA_ERR_ABORTED = 1;\n\n/**\n * W3C error code for any network error.\n *\n * @member MediaError#MEDIA_ERR_NETWORK\n * @constant {number}\n * @default 2\n */\nMediaError.MEDIA_ERR_NETWORK = 2;\n\n/**\n * W3C error code for any network error.\n *\n * @member MediaError.MEDIA_ERR_NETWORK\n * @constant {number}\n * @default 2\n */\nMediaError.prototype.MEDIA_ERR_NETWORK = 2;\n\n/**\n * W3C error code for any decoding error.\n *\n * @member MediaError#MEDIA_ERR_DECODE\n * @constant {number}\n * @default 3\n */\nMediaError.MEDIA_ERR_DECODE = 3;\n\n/**\n * W3C error code for any decoding error.\n *\n * @member MediaError.MEDIA_ERR_DECODE\n * @constant {number}\n * @default 3\n */\nMediaError.prototype.MEDIA_ERR_DECODE = 3;\n\n/**\n * W3C error code for any time that a source is not supported.\n *\n * @member MediaError#MEDIA_ERR_SRC_NOT_SUPPORTED\n * @constant {number}\n * @default 4\n */\nMediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\n/**\n * W3C error code for any time that a source is not supported.\n *\n * @member MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED\n * @constant {number}\n * @default 4\n */\nMediaError.prototype.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\n/**\n * W3C error code for any time that a source is encrypted.\n *\n * @member MediaError#MEDIA_ERR_ENCRYPTED\n * @constant {number}\n * @default 5\n */\nMediaError.MEDIA_ERR_ENCRYPTED = 5;\n\n/**\n * W3C error code for any time that a source is encrypted.\n *\n * @member MediaError.MEDIA_ERR_ENCRYPTED\n * @constant {number}\n * @default 5\n */\nMediaError.prototype.MEDIA_ERR_ENCRYPTED = 5;\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/**\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 */\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, 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/** @import Tech from '../tech/tech' */\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 */\nconst trackToJson_ = function (track) {\n const ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce((acc, prop, i) => {\n if (track[prop]) {\n acc[prop] = track[prop];\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/**\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 */\nconst textTracksToJson = function (tech) {\n const trackEls = tech.$$('track');\n const trackObjs = Array.prototype.map.call(trackEls, t => t.track);\n const tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n const json = trackToJson_(trackEl.track);\n if (trackEl.src) {\n json.src = trackEl.src;\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/**\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 */\nconst jsonToTextTracks = function (json, tech) {\n json.forEach(function (track) {\n const addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach(cue => addedTrack.addCue(cue));\n }\n });\n return tech.textTracks();\n};\nvar textTrackConverter = {\n textTracksToJson,\n jsonToTextTracks,\n trackToJson_\n};\n\n/**\n * @file modal-dialog.js\n */\n\n/** @import Player from './player' */\n/** @import { ContentDescriptor } from './utils/dom' */\n\nconst MODAL_CLASS_NAME = 'vjs-modal-dialog';\n\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 */\nclass ModalDialog extends Component$1 {\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {ContentDescriptor} [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 constructor(player, options) {\n super(player, options);\n this.handleKeyDown_ = e => this.handleKeyDown(e);\n this.close_ = e => this.close(e);\n this.opened_ = this.hasBeenOpened_ = this.hasBeenFilled_ = false;\n this.closeable(!this.options_.uncloseable);\n this.content(this.options_.content);\n\n // 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 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 this.el_.appendChild(this.descEl_);\n this.el_.appendChild(this.contentEl_);\n }\n\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n createEl() {\n return super.createEl('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 'aria-live': 'polite'\n });\n }\n dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n super.dispose();\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n buildCSSClass() {\n return `${MODAL_CLASS_NAME} vjs-hidden ${super.buildCSSClass()}`;\n }\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 label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\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 description() {\n let desc = this.options_.description || this.localize('This is a modal window.');\n\n // Append a universal closeability message if the modal is closeable.\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 return desc;\n }\n\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n open() {\n if (this.opened_) {\n if (this.options_.fillAlways) {\n this.fill();\n }\n return;\n }\n const player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {Event}\n */\n this.trigger('beforemodalopen');\n this.opened_ = true;\n\n // Fill content if the modal has never opened before and\n // never been filled.\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n }\n\n // If the player was playing, pause it and take note of its previously\n // playing state.\n this.wasPlaying_ = !player.paused();\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n this.on('keydown', this.handleKeyDown_);\n\n // Hide controls and note if they were enabled.\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {Event}\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 opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n }\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 close() {\n if (!this.opened_) {\n return;\n }\n const player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {Event}\n */\n this.trigger('beforemodalclose');\n this.opened_ = false;\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n this.off('keydown', this.handleKeyDown_);\n if (this.hadControls_) {\n player.controls(true);\n }\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {Event}\n *\n * @property {boolean} [bubbles=true]\n */\n this.trigger({\n type: 'modalclose',\n bubbles: true\n });\n this.conditionalBlur_();\n if (this.options_.temporary) {\n this.dispose();\n }\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 closeable(value) {\n if (typeof value === 'boolean') {\n const closeable = this.closeable_ = !!value;\n let close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\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 const 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 }\n\n // If this is being made uncloseable and has a close button, remove it.\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n return this.closeable_;\n }\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 fill() {\n this.fillWith(this.content());\n }\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 {ContentDescriptor} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n fillWith(content) {\n const contentEl = this.contentEl();\n const parentEl = contentEl.parentNode;\n const nextSiblingEl = contentEl.nextSibling;\n\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {Event}\n */\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true;\n\n // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\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 {Event}\n */\n this.trigger('modalfill');\n\n // Re-inject the re-filled content element.\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n }\n\n // make sure that the close button is last in the dialog DOM\n const closeButton = this.getChild('closeButton');\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\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 empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {Event}\n */\n this.trigger('modalempty');\n }\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 {ContentDescriptor} [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 {ContentDescriptor}\n * The current content of the modal dialog\n */\n content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n }\n\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n conditionalFocus_() {\n const activeEl = document$1.activeElement;\n const playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n handleKeyDown(event) {\n /**\n * Fired a custom keyDown event that bubbles.\n *\n * @event ModalDialog#modalKeydown\n * @type {Event}\n */\n this.trigger({\n type: 'modalKeydown',\n originalEvent: event,\n target: this,\n bubbles: true\n });\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n if (event.key === 'Escape' && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n }\n\n // exit early if it isn't a tab key\n if (event.key !== 'Tab') {\n return;\n }\n const focusableEls = this.focusableEls_();\n const activeEl = this.el_.querySelector(':focus');\n let focusIndex;\n for (let i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n if (document$1.activeElement === this.el_) {\n focusIndex = 0;\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 /**\n * get all focusable elements\n *\n * @private\n */\n focusableEls_() {\n const allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, 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\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * @file track-list.js\n */\n\n/** @import Track from './track' */\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\nclass TrackList extends EventTarget$2 {\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 constructor(tracks = []) {\n super();\n this.tracks_ = [];\n\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.tracks_.length;\n }\n });\n for (let i = 0; i < tracks.length; i++) {\n this.addTrack(tracks[i]);\n }\n }\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 addTrack(track) {\n const index = this.tracks_.length;\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\n return this.tracks_[index];\n }\n });\n }\n\n // Do not add duplicate tracks\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 {Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n this.trigger({\n track,\n type: 'addtrack',\n target: this\n });\n }\n\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n track.labelchange_ = () => {\n this.trigger({\n track,\n type: 'labelchange',\n target: this\n });\n };\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n removeTrack(rtrack) {\n let track;\n for (let i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n if (track.off) {\n track.off();\n }\n this.tracks_.splice(i, 1);\n break;\n }\n }\n if (!track) {\n return;\n }\n\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n this.trigger({\n track,\n type: 'removetrack',\n target: this\n });\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 getTrackById(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n const track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n return result;\n }\n}\n\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @protected\n */\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (const event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * @file audio-track-list.js\n */\n\n/** @import AudioTrack from './audio-track' */\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 */\nconst disableOthers$1 = function (list, track) {\n for (let i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another audio track is enabled, disable it\n list[i].enabled = false;\n }\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 */\nclass AudioTrackList extends TrackList {\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 constructor(tracks = []) {\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n super(tracks);\n this.changing_ = false;\n }\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 addTrack(track) {\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n super.addTrack(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.enabledChange_ = () => {\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 (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers$1(this, track);\n this.changing_ = false;\n this.trigger('change');\n };\n\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n track.addEventListener('enabledchange', track.enabledChange_);\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n }\n}\n\n/**\n * @file video-track-list.js\n */\n\n/** @import VideoTrack from './video-track' */\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 */\nconst disableOthers = function (list, track) {\n for (let i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another video track is enabled, disable it\n list[i].selected = false;\n }\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 */\nclass VideoTrackList extends TrackList {\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 constructor(tracks = []) {\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n super(tracks);\n this.changing_ = false;\n\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n Object.defineProperty(this, 'selectedIndex', {\n get() {\n for (let i = 0; i < this.length; i++) {\n if (this[i].selected) {\n return i;\n }\n }\n return -1;\n },\n set() {}\n });\n }\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 addTrack(track) {\n if (track.selected) {\n disableOthers(this, track);\n }\n super.addTrack(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.selectedChange_ = () => {\n if (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers(this, track);\n this.changing_ = false;\n this.trigger('change');\n };\n\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n track.addEventListener('selectedchange', track.selectedChange_);\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n }\n}\n\n/**\n * @file text-track-list.js\n */\n\n/** @import TextTrack from './text-track' */\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 */\nclass TextTrackList extends TrackList {\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 addTrack(track) {\n super.addTrack(track);\n if (!this.queueChange_) {\n this.queueChange_ = () => this.queueTrigger('change');\n }\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = () => this.trigger('selectedlanguagechange');\n }\n\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n track.addEventListener('modechange', this.queueChange_);\n const nonLanguageTextTrackKind = ['metadata', 'chapters'];\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n\n // manually remove the event handlers we added\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n }\n}\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nclass HtmlTrackElementList {\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 constructor(trackElements = []) {\n this.trackElements_ = [];\n\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.trackElements_.length;\n }\n });\n for (let i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\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 addTrackElement_(trackElement) {\n const index = this.trackElements_.length;\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\n return this.trackElements_[index];\n }\n });\n }\n\n // Do not add duplicate elements\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\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 getTrackElementByTrack_(track) {\n let trackElement_;\n for (let 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 return trackElement_;\n }\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 removeTrackElement_(trackElement) {\n for (let 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 if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n }\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 */\nclass TextTrackCueList {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n constructor(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.length_;\n }\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 setCues_(cues) {\n const oldLength = this.length || 0;\n let i = 0;\n const l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n const defineProp = function (index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get() {\n return this.cues_[index];\n }\n });\n }\n };\n if (oldLength < l) {\n i = oldLength;\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\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 getCueById(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n const cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n return result;\n }\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 */\nconst VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\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 */\nconst AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\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 */\nconst TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\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 */\nconst TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * @file track.js\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 */\nclass Track extends EventTarget$2 {\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 constructor(options = {}) {\n super();\n const trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n let label = options.label || '';\n\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n for (const key in trackProps) {\n Object.defineProperty(this, key, {\n get() {\n return trackProps[key];\n },\n set() {}\n });\n }\n\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n Object.defineProperty(this, 'label', {\n get() {\n return label;\n },\n set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n\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 {Event}\n */\n this.trigger('labelchange');\n }\n }\n });\n }\n}\n\n/**\n * @file url.js\n * @module url\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}\n * An object of url details\n */\nconst parseUrl = function (url) {\n return new URL(url, document$1.baseURI);\n};\n\n/**\n * Get absolute version of relative URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n */\nconst getAbsoluteURL = function (url) {\n return new URL(url, document$1.baseURI).href;\n};\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 */\nconst getFileExtension = function (path) {\n if (typeof path === 'string') {\n const splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n const pathParts = splitPathRe.exec(path);\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n return '';\n};\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 {URL} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nconst isCrossOrigin = function (url, winLoc = window$1.location) {\n return parseUrl(url).origin !== winLoc.origin;\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 * @file text-track.js\n */\n\n/** @import Tech from '../tech/tech' */\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 */\nconst parseCues = function (srcContent, track) {\n const parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.WebVTT.StringDecoder());\n const errors = [];\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n parser.parse(srcContent);\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 errors.forEach(error => log$1.error(error));\n if (window$1.console && window$1.console.groupEnd) {\n window$1.console.groupEnd();\n }\n }\n parser.flush();\n};\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 */\nconst loadTrack = function (src, track) {\n const opts = {\n uri: src\n };\n const crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n const withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n XHR(opts, bind_(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n track.loaded_ = true;\n\n // 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 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'], event => {\n if (event.type === 'vttjserror') {\n log$1.error(`vttjs failed to load, stopping trying to process ${track.src}`);\n return;\n }\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\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 */\nclass TextTrack extends Track {\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 constructor(options = {}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n const settings = merge$1(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n let mode = TextTrackMode[settings.mode] || 'disabled';\n const default_ = settings.default;\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n super(settings);\n this.tech_ = settings.tech;\n this.cues_ = [];\n this.activeCues_ = [];\n this.preload_ = this.tech_.preloadTextTracks !== false;\n const cues = new TextTrackCueList(this.cues_);\n const activeCues = new TextTrackCueList(this.activeCues_);\n let changed = false;\n this.timeupdateHandler = bind_(this, function (event = {}) {\n if (this.tech_.isDisposed()) {\n return;\n }\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n return;\n }\n\n // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n this.activeCues = this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n const disposeHandler = () => {\n this.stopTracking();\n };\n this.tech_.one('dispose', disposeHandler);\n if (mode !== 'disabled') {\n this.startTracking();\n }\n Object.defineProperties(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() {\n return default_;\n },\n set() {}\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() {\n return mode;\n },\n set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n if (mode === newMode) {\n return;\n }\n mode = newMode;\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n this.stopTracking();\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 {Event}\n */\n this.trigger('modechange');\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() {\n if (!this.loaded_) {\n return null;\n }\n return cues;\n },\n set() {}\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() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n const ct = this.tech_.currentTime();\n const active = [];\n for (let i = 0, l = this.cues.length; i < l; i++) {\n const cue = this.cues[i];\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n }\n }\n changed = false;\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (this.activeCues_.indexOf(active[i]) === -1) {\n changed = true;\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() {}\n }\n });\n if (settings.src) {\n this.src = settings.src;\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 if (this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(this.src, this);\n }\n } else {\n this.loaded_ = true;\n }\n }\n startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n this.tech_.on('timeupdate', this.timeupdateHandler);\n }\n stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n this.tech_.off('timeupdate', this.timeupdateHandler);\n }\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 addCue(originalCue) {\n let cue = originalCue;\n\n // Testing if the cue is a VTTCue in a way that survives minification\n if (!('getCueAsHTML' in cue)) {\n cue = new window$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n for (const prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n }\n\n // make sure that `id` is copied over\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n const tracks = this.tech_.textTracks();\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\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 removeCue(removeCue) {\n let i = this.cues_.length;\n while (i--) {\n const cue = this.cues_[i];\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\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n *\n * @protected\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 */\nclass AudioTrack extends Track {\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 constructor(options = {}) {\n const settings = merge$1(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n super(settings);\n let enabled = false;\n\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 Object.defineProperty(this, 'enabled', {\n get() {\n return enabled;\n },\n set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n enabled = newEnabled;\n\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 {Event}\n */\n this.trigger('enabledchange');\n }\n });\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 if (settings.enabled) {\n this.enabled = settings.enabled;\n }\n this.loaded_ = true;\n }\n}\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 */\nclass VideoTrack extends Track {\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 constructor(options = {}) {\n const settings = merge$1(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n super(settings);\n let selected = false;\n\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 Object.defineProperty(this, 'selected', {\n get() {\n return selected;\n },\n set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n selected = newSelected;\n\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 {Event}\n */\n this.trigger('selectedchange');\n }\n });\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 if (settings.selected) {\n this.selected = settings.selected;\n }\n }\n}\n\n/**\n * @file html-track-element.js\n */\n\n/** @import Tech from '../tech/tech' */\n\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 */\nclass HTMLTrackElement extends EventTarget$2 {\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 constructor(options = {}) {\n super();\n let readyState;\n const 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(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() {\n return readyState;\n }\n },\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get() {\n return track;\n }\n }\n });\n readyState = HTMLTrackElement.NONE;\n\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n track.addEventListener('loadeddata', () => {\n readyState = HTMLTrackElement.LOADED;\n this.trigger({\n type: 'load',\n target: this\n });\n });\n }\n}\n\n/**\n * @protected\n */\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\n/**\n * The text track not loaded state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.NONE = 0;\n\n/**\n * The text track loading state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.LOADING = 1;\n\n/**\n * The text track loaded state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.LOADED = 2;\n\n/**\n * The text track failed to load state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.ERROR = 3;\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\nconst 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});\nconst 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};\nconst ALL = Object.assign({}, NORMAL, REMOTE);\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * @file tech.js\n */\n\n/** @import { TimeRange } from '../utils/time' */\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} 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 */\nfunction createTrackHelper(self, kind, label, language, options = {}) {\n const tracks = self.textTracks();\n options.kind = kind;\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n const track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\nclass Tech extends Component$1 {\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Function} [ready]\n * Callback function to call when the `HTML5` Tech is ready.\n */\n constructor(options = {}, ready = function () {}) {\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n super(null, options, ready);\n this.onDurationChange_ = e => this.onDurationChange(e);\n this.trackProgress_ = e => this.trackProgress(e);\n this.trackCurrentTime_ = e => this.trackCurrentTime(e);\n this.stopTrackingCurrentTime_ = e => this.stopTrackingCurrentTime(e);\n this.disposeSourceHandler_ = e => this.disposeSourceHandler(e);\n this.queuedHanders_ = new Set();\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n this.hasStarted_ = false;\n this.on('playing', function () {\n this.hasStarted_ = true;\n });\n this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n ALL.names.forEach(name => {\n const props = ALL[name];\n if (options && options[props.getterName]) {\n this[props.privateName] = options[props.getterName];\n }\n });\n\n // Manually track progress in cases where the browser/tech doesn't report it.\n if (!this.featuresProgressEvents) {\n this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/tech doesn't report it.\n if (!this.featuresTimeupdateEvents) {\n this.manualTimeUpdatesOn();\n }\n ['Text', 'Audio', 'Video'].forEach(track => {\n if (options[`native${track}Tracks`] === false) {\n this[`featuresNative${track}Tracks`] = false;\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 if (!this.featuresNativeTextTracks) {\n this.emulateTextTracks();\n }\n this.preloadTextTracks = options.preloadTextTracks !== false;\n this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n this.initTrackListeners();\n\n // Turn on component tap events only if not using native controls\n if (!options.nativeControlsForTouch) {\n this.emitTapEvents();\n }\n if (this.constructor) {\n this.name_ = this.constructor.name || 'Unknown Tech';\n }\n }\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 triggerSourceset(src) {\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', () => this.setTimeout(() => this.triggerSourceset(src), 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 {Event}\n */\n this.trigger({\n src,\n type: 'sourceset'\n });\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 manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress_);\n }\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\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 {Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n 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\n const numBufferedPercent = this.bufferedPercent();\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {Event}\n */\n this.trigger('progress');\n }\n this.bufferedPercent_ = numBufferedPercent;\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n onDurationChange(event) {\n this.duration_ = this.duration();\n }\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 buffered() {\n return createTimeRanges$1(0, 0);\n }\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 bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\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 stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\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 trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\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 {Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n\n // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\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 stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #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 this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\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 dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names);\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n super.dispose();\n }\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 clearTracks(types) {\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach(type => {\n const list = this[`${type}Tracks`]() || [];\n let i = list.length;\n while (i--) {\n const track = list[i];\n if (type === 'text') {\n this.removeRemoteTextTrack(track);\n }\n list.removeTrack(track);\n }\n });\n }\n\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n cleanupAutoTextTracks() {\n const list = this.autoRemoteTextTracks_ || [];\n let i = list.length;\n while (i--) {\n const track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n reset() {}\n\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n crossOrigin() {}\n\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 setCrossOrigin() {}\n\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 error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n return this.error_;\n }\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 played() {\n if (this.hasStarted_) {\n return createTimeRanges$1(0, 0);\n }\n return createTimeRanges$1();\n }\n\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n play() {}\n\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n * @param {boolean} _isScrubbing\n * - true for we are currently scrubbing\n * - false for we are no longer scrubbing\n *\n * @see {Html5#setScrubbing}\n */\n setScrubbing(_isScrubbing) {}\n\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n scrubbing() {}\n\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @param {number} _seconds\n * Set the current time of the media to this.\n * @fires Tech#timeupdate\n */\n setCurrentTime(_seconds) {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\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 initTrackListeners() {\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {Event}\n */\n NORMAL.names.forEach(name => {\n const props = NORMAL[name];\n const trackListChanges = () => {\n this.trigger(`${name}trackchange`);\n };\n const tracks = this[props.getterName]();\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n this.on('dispose', () => {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n addWebVttScript_() {\n if (window$1.WebVTT) {\n return;\n }\n\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 if (document$1.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 }\n\n // load vtt.js via the script location option or the cdn of no location was\n // passed in\n const script = document$1.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n script.onload = () => {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {Event}\n */\n this.trigger('vttjsloaded');\n };\n script.onerror = () => {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {Event}\n */\n this.trigger('vttjserror');\n };\n this.on('dispose', () => {\n script.onload = null;\n script.onerror = null;\n });\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 window$1.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n\n /**\n * Emulate texttracks\n *\n */\n emulateTextTracks() {\n const tracks = this.textTracks();\n const remoteTracks = this.remoteTextTracks();\n const handleAddTrack = e => tracks.addTrack(e.track);\n const handleRemoveTrack = e => tracks.removeTrack(e.track);\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n const updateDisplay = () => this.trigger('texttrackchange');\n const textTracksChanges = () => {\n updateDisplay();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\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 for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\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 addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n return createTrackHelper(this, kind, label, language);\n }\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 createRemoteTextTrack(options) {\n const track = merge$1(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\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=false]\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 */\n addRemoteTextTrack(options = {}, manualCleanup) {\n const htmlTrackElement = this.createRemoteTextTrack(options);\n if (typeof manualCleanup !== 'boolean') {\n manualCleanup = false;\n }\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n if (manualCleanup === false) {\n // create the TextTrackList if it doesn't exist\n this.ready(() => this.autoRemoteTextTracks_.addTrack(htmlTrackElement.track));\n }\n return htmlTrackElement;\n }\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 removeRemoteTextTrack(track) {\n const trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\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 getVideoPlaybackQuality() {\n return {};\n }\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 requestPictureInPicture() {\n return Promise.reject();\n }\n\n /**\n * A method to check for the value of the 'disablePictureInPicture'