-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
2 lines (2 loc) · 54.2 KB
/
index.js
1
2
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["ytdl-core"]=t():e["ytdl-core"]=t()}(global,(function(){return function(e){var t={};function i(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,a){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(i.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(a,r,function(t){return e[t]}.bind(null,r));return a},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=8)}([function(e,t){e.exports=require("stream")},function(e,t){e.exports=require("url")},function(e,t,i){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const r=a(i(11)),s=a(i(12)),o=i(1),n=i(0),l={"http:":r.default,"https:":s.default},c={301:!0,302:!0,303:!0,307:!0},u={429:!0,503:!0},d={maxRedirects:2,maxRetries:2,maxReconnects:0,backoff:{inc:100,max:1e4}};function p(e,t,i){"function"==typeof t?(i=t,t={}):t||(t={});const a=Object.assign({},d,t),r=new n.PassThrough({highWaterMark:a.highWaterMark});let s,p,m,h,f,b=!1,g=0,T=0,y=0,E=!1,_=0,v=0;if(a.headers&&a.headers.Range){let e=/bytes=(\d+)-(\d+)?/.exec(a.headers.Range+"");e&&(_=parseInt(e[1],10),f=parseInt(e[2],10))}a.acceptEncoding&&(a.headers=Object.assign({"Accept-Encoding":Object.keys(a.acceptEncoding).join(", ")},a.headers));const I=(e={})=>{if(b)return!1;if(p&&0<v){if(E&&v<h&&y++<a.maxReconnects){p=null,T=0;let t=a.backoff.inc,i=Math.min(t,a.backoff.max);return m=setTimeout(N,i),r.emit("reconnect",y,e.err),!0}}else if((!e.statusCode||e.err&&"ENOTFOUND"===e.err.message)&&T++<a.maxRetries){let t=e.retryAfter||Math.min(T*a.backoff.inc,a.backoff.max);return m=setTimeout(N,t),r.emit("retry",T,e.err),!0}return!1},w=(e,t)=>{I({err:e,statusCode:t})||r.emit("error",e)},N=()=>{if(b)return;let t,i;try{t=o.parse(e),i=l[t.protocol]}catch(e){}if(i){if(Object.assign(t,a),E&&v>0){let e=v+_,i=f||"";t.headers=Object.assign({},t.headers,{Range:`bytes=${e}-${i}`})}if(a.transform){try{t=a.transform(t)}catch(e){return void r.emit("error",e)}if((!t||t.protocol)&&(i=l[null==t?void 0:t.protocol],!i))return void r.emit("error",Error("Invalid URL object from `transform` function"))}s=i.get(t,t=>{if(t.statusCode in c)return void(g++>=a.maxRedirects?r.emit("error",Error("Too many redirects")):(e=t.headers.location,setTimeout(N,t.headers["retry-after"]?1e3*parseInt(t.headers["retry-after"],10):0),r.emit("redirect",e)));if(t.statusCode in u){if(!I({retryAfter:parseInt(t.headers["retry-after"],10)})){let e=Error("Status code: "+t.statusCode);r.emit("error",e)}return}if(t.statusCode<200||400<=t.statusCode){let e=Error("Status code: "+t.statusCode);return void(t.statusCode>=500?w(e,t.statusCode):r.emit("error",e))}let i=t;const s=()=>{t.removeListener("data",o),i.removeListener("end",n),i.removeListener("error",l),t.removeListener("error",l)},o=e=>{v+=e.length},n=()=>{s(),I()||r.end()},l=e=>{s(),w(e)};if(a.acceptEncoding&&t.headers["content-encoding"])for(let e of t.headers["content-encoding"].split(", ").reverse()){let t=a.acceptEncoding[e];null!=t&&(i=i.pipe(t()),i.on("error",l))}h||(h=parseInt(t.headers["content-length"]+"",10),E="bytes"===t.headers["accept-ranges"]&&h>0&&a.maxReconnects>0),t.on("data",o),i.on("end",n),i.pipe(r,{end:!E}),p=i,r.emit("response",t),t.on("error",l)}),s.on("error",w),r.emit("request",s)}else r.emit("error",Error("Invalid URL: "+e))};if(r.abort=()=>{b=!0,r.emit("abort"),s&&s.abort(),p&&p.unpipe(r),clearTimeout(m)},process.nextTick(N),i){let e,t="";r.setEncoding("utf8"),r.on("data",e=>t+=e),r.on("response",t=>e=t),r.on("end",()=>i(null,e,t)),r.on("error",i)}return i?null:r}!function(e){e.promise=(t,i)=>new Promise((a,r)=>{e(t,i,(e,t,i)=>{if(e)return r(e);a([t,i])})})}(p||(p={})),e.exports=p},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=/^\d+$/,r=/^(?:(?:(\d+):)?(\d{1,2}):)?(\d{1,2})(?:\.(\d{3}))?$/,s={ms:1,s:1e3,m:6e4,h:36e5};t.humanStr=e=>{if("number"==typeof e)return e;if(a.test(e))return+e;const t=r.exec(e);if(t)return+(t[1]||0)*s.h+ +(t[2]||0)*s.m+ +t[3]*s.s+ +(t[4]||0);{let t=0;const i=/(-?\d+)(ms|s|m|h)/g;let a;for(;null!=(a=i.exec(e));)t+=+a[1]*s[a[2]];return t}},t.durationStr=e=>{let t=0;const i=/(\d+(?:\.\d+)?)(S|M|H)/g;let a;for(;null!=(a=i.exec(e));)t+=+a[1]*s[a[2].toLowerCase()];return t}},function(e,t){e.exports=require("querystring")},function(e,t,i){const a=i(1),r=i(13),s=["mp4a","mp3","vorbis","aac","opus","flac"],o=["mp4v","avc1","Sorenson H.283","MPEG-4 Visual","VP8","VP9","H.264"],n=e=>parseInt(e.bitrate)||0,l=e=>(e.audioBitrate||0)+s.findIndex(t=>e.codecs&&e.codecs.includes(t))/10;t.sortFormats=(e,t)=>{const i=e=>{const t=/(\d+)p/.exec(e.qualityLabel);return t?parseInt(t[1]):0},a=i(e),r=i(t),s=2*~~!!a+~~!!e.audioBitrate,c=2*~~!!r+~~!!t.audioBitrate;if(s===c){if(a===r){let i=n(e),a=n(t);if(i===a){let i=l(e),a=l(t);if(i===a){const i=o.findIndex(t=>e.codecs&&e.codecs.includes(t));return o.findIndex(e=>t.codecs&&t.codecs.includes(e))-i}return a-i}return a-i}return r-a}return c-s},t.chooseFormat=(e,i)=>{if("object"==typeof i.format)return i.format;let a;i.filter&&(e=t.filterFormats(e,i.filter));const r=i.quality||"highest";switch(r){case"highest":a=e[0];break;case"lowest":a=e[e.length-1];break;case"highestaudio":e=t.filterFormats(e,"audio"),u(e,!0),a=e[0];break;case"lowestaudio":e=t.filterFormats(e,"audio"),u(e,!0),a=e[e.length-1];break;case"highestvideo":e=t.filterFormats(e,"video"),u(e),a=e[0];break;case"lowestvideo":e=t.filterFormats(e,"video"),u(e),a=e[e.length-1];break;default:a=c(r,e)}if(!a)throw Error("No such format found: "+r);return a};const c=(e,t)=>{let i=e=>t.find(t=>""+t.itag==""+e);return Array.isArray(e)?i(e.find(e=>i(e))):i(e)},u=(e,t=!1)=>e.sort((e,i)=>t?l(i)-l(e):n(i)-n(e));t.filterFormats=(e,t)=>{let i;const a=e=>!!e.qualityLabel,r=e=>!!e.audioBitrate;switch(t){case"audioandvideo":i=e=>a(e)&&r(e);break;case"video":i=a;break;case"videoonly":i=e=>a(e)&&!r(e);break;case"audio":i=r;break;case"audioonly":i=e=>!a(e)&&r(e);break;default:if("function"!=typeof t)throw TypeError(`Given filter (${t}) is not supported`);i=t}return e.filter(e=>!!e.url&&i(e))},t.between=(e,t,i)=>{let a=e.indexOf(t);return-1===a?"":(a=(e=e.slice(a+t.length)).indexOf(i),-1===a?"":e=e.slice(0,a))};const d=new Set(["youtube.com","www.youtube.com","m.youtube.com","music.youtube.com","gaming.youtube.com"]),p=/^https?:\/\/(youtu\.be\/|(www\.)?youtube.com\/(embed|v)\/)/;t.getURLVideoID=e=>{const i=a.parse(e,!0);let r=i.query.v;if(p.test(e)&&!r){const e=i.pathname.split("/");r=e[e.length-1]}else if(i.hostname&&!d.has(i.hostname))throw Error("Not a YouTube domain");if(!r)throw Error("No video id found: "+e);if(r=r.substring(0,11),!t.validateID(r))throw TypeError(`Video id (${r}) does not match expected format (${m.toString()})`);return r},t.getVideoID=e=>t.validateID(e)?e:t.getURLVideoID(e);const m=/^[a-zA-Z0-9-_]{11}$/;t.validateID=e=>m.test(e),t.validateURL=e=>{try{return t.getURLVideoID(e),!0}catch(e){return!1}},t.addFormatMeta=e=>((e=Object.assign({},r[e.itag],e)).container=e.mimeType?e.mimeType.split(";")[0].split("/")[1]:null,e.codecs=e.mimeType?t.between(e.mimeType,'codecs="','"'):null,e.live=/\/source\/yt_live_broadcast\//.test(e.url),e.isHLS=/\/manifest\/hls_(variant|playlist)\//.test(e.url),e.isDashMPD=/\/manifest\/dash\//.test(e.url),e),t.stripHTML=e=>e.replace(/[\n\r]/g," ").replace(/\s*<\s*br\s*\/?\s*>\s*/gi,"\n").replace(/<\s*\/\s*p\s*>\s*<\s*p[^>]*>/gi,"\n").replace(/<a\s+(?:[^>]*?\s+)?href=(?:["'])\/redirect.*?q=(.*?)(?:[&'"]).*?<\/a>/gi,(e,t)=>decodeURIComponent(t)).replace(/<a\s+(?:[^>]*?\s+)?href=(?:["'])((?:https?|\/).*?)(?:['"]).*?<\/a>/gi,(e,t)=>a.resolve("https://youtube.com/",t)).replace(/<.*?>/gi,"").trim(),t.parseAbbreviatedNumber=e=>{const t=e.replace(",",".").replace(" ","").match(/([\d,.]+)([MK]?)/);if(t){let[,e,i]=t;return e=parseFloat(e),"M"===i?1e6*e:"K"===i?1e3*e:e}return null},t.cutAfterJSON=e=>{let t,i;if("["===e[0]?(t="[",i="]"):"{"===e[0]&&(t="{",i="}"),!t)throw new Error("Can't cut unsupported JSON (need to begin with [ or { ) but got: "+e[0]);let a,r=!1,s=0;for(a=0;a<e.length;a++)if('"'!==e[a]||"\\"===e[a-1]){if(!r&&(e[a]===t?s++:e[a]===i&&s--,0===s))return e.substr(0,a+1)}else r=!r;throw Error("Can't cut unsupported JSON (no matching closing bracket found)")},t.playError=(e,t)=>{let i=e.playerResponse.playabilityStatus;return i&&i.status===t?Error(i.reason||i.messages&&i.messages[0]):null}},function(e,t,i){!function(e){e.parser=function(e,t){return new r(e,t)},e.SAXParser=r,e.SAXStream=o,e.createStream=function(e,t){return new o(e,t)},e.MAX_BUFFER_LENGTH=65536;var t,a=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];function r(t,i){if(!(this instanceof r))return new r(t,i);!function(e){for(var t=0,i=a.length;t<i;t++)e[a[t]]=""}(this),this.q=this.c="",this.bufferCheckPosition=e.MAX_BUFFER_LENGTH,this.opt=i||{},this.opt.lowercase=this.opt.lowercase||this.opt.lowercasetags,this.looseCase=this.opt.lowercase?"toLowerCase":"toUpperCase",this.tags=[],this.closed=this.closedRoot=this.sawRoot=!1,this.tag=this.error=null,this.strict=!!t,this.noscript=!(!t&&!this.opt.noscript),this.state=_.BEGIN,this.strictEntities=this.opt.strictEntities,this.ENTITIES=this.strictEntities?Object.create(e.XML_ENTITIES):Object.create(e.ENTITIES),this.attribList=[],this.opt.xmlns&&(this.ns=Object.create(l)),this.trackPosition=!1!==this.opt.position,this.trackPosition&&(this.position=this.line=this.column=0),I(this,"onready")}e.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(e){function t(){}return t.prototype=e,new t}),Object.keys||(Object.keys=function(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&t.push(i);return t}),r.prototype={end:function(){R(this)},write:function(t){if(this.error)throw this.error;if(this.closed)return A(this,"Cannot write after close. Assign an onready handler.");if(null===t)return R(this);"object"==typeof t&&(t=t.toString());var i=0,r="";for(;r=P(t,i++),this.c=r,r;)switch(this.trackPosition&&(this.position++,"\n"===r?(this.line++,this.column=0):this.column++),this.state){case _.BEGIN:if(this.state=_.BEGIN_WHITESPACE,"\ufeff"===r)continue;q(this,r);continue;case _.BEGIN_WHITESPACE:q(this,r);continue;case _.TEXT:if(this.sawRoot&&!this.closedRoot){for(var s=i-1;r&&"<"!==r&&"&"!==r;)(r=P(t,i++))&&this.trackPosition&&(this.position++,"\n"===r?(this.line++,this.column=0):this.column++);this.textNode+=t.substring(s,i-1)}"<"!==r||this.sawRoot&&this.closedRoot&&!this.strict?(m(r)||this.sawRoot&&!this.closedRoot||L(this,"Text data outside of root node."),"&"===r?this.state=_.TEXT_ENTITY:this.textNode+=r):(this.state=_.OPEN_WAKA,this.startTagPosition=this.position);continue;case _.SCRIPT:"<"===r?this.state=_.SCRIPT_ENDING:this.script+=r;continue;case _.SCRIPT_ENDING:"/"===r?this.state=_.CLOSE_TAG:(this.script+="<"+r,this.state=_.SCRIPT);continue;case _.OPEN_WAKA:if("!"===r)this.state=_.SGML_DECL,this.sgmlDecl="";else if(m(r));else if(b(c,r))this.state=_.OPEN_TAG,this.tagName=r;else if("/"===r)this.state=_.CLOSE_TAG,this.tagName="";else if("?"===r)this.state=_.PROC_INST,this.procInstName=this.procInstBody="";else{if(L(this,"Unencoded <"),this.startTagPosition+1<this.position){var o=this.position-this.startTagPosition;r=new Array(o).join(" ")+r}this.textNode+="<"+r,this.state=_.TEXT}continue;case _.SGML_DECL:"[CDATA["===(this.sgmlDecl+r).toUpperCase()?(w(this,"onopencdata"),this.state=_.CDATA,this.sgmlDecl="",this.cdata=""):this.sgmlDecl+r==="--"?(this.state=_.COMMENT,this.comment="",this.sgmlDecl=""):"DOCTYPE"===(this.sgmlDecl+r).toUpperCase()?(this.state=_.DOCTYPE,(this.doctype||this.sawRoot)&&L(this,"Inappropriately located doctype declaration"),this.doctype="",this.sgmlDecl=""):">"===r?(w(this,"onsgmldeclaration",this.sgmlDecl),this.sgmlDecl="",this.state=_.TEXT):h(r)?(this.state=_.SGML_DECL_QUOTED,this.sgmlDecl+=r):this.sgmlDecl+=r;continue;case _.SGML_DECL_QUOTED:r===this.q&&(this.state=_.SGML_DECL,this.q=""),this.sgmlDecl+=r;continue;case _.DOCTYPE:">"===r?(this.state=_.TEXT,w(this,"ondoctype",this.doctype),this.doctype=!0):(this.doctype+=r,"["===r?this.state=_.DOCTYPE_DTD:h(r)&&(this.state=_.DOCTYPE_QUOTED,this.q=r));continue;case _.DOCTYPE_QUOTED:this.doctype+=r,r===this.q&&(this.q="",this.state=_.DOCTYPE);continue;case _.DOCTYPE_DTD:this.doctype+=r,"]"===r?this.state=_.DOCTYPE:h(r)&&(this.state=_.DOCTYPE_DTD_QUOTED,this.q=r);continue;case _.DOCTYPE_DTD_QUOTED:this.doctype+=r,r===this.q&&(this.state=_.DOCTYPE_DTD,this.q="");continue;case _.COMMENT:"-"===r?this.state=_.COMMENT_ENDING:this.comment+=r;continue;case _.COMMENT_ENDING:"-"===r?(this.state=_.COMMENT_ENDED,this.comment=D(this.opt,this.comment),this.comment&&w(this,"oncomment",this.comment),this.comment=""):(this.comment+="-"+r,this.state=_.COMMENT);continue;case _.COMMENT_ENDED:">"!==r?(L(this,"Malformed comment"),this.comment+="--"+r,this.state=_.COMMENT):this.state=_.TEXT;continue;case _.CDATA:"]"===r?this.state=_.CDATA_ENDING:this.cdata+=r;continue;case _.CDATA_ENDING:"]"===r?this.state=_.CDATA_ENDING_2:(this.cdata+="]"+r,this.state=_.CDATA);continue;case _.CDATA_ENDING_2:">"===r?(this.cdata&&w(this,"oncdata",this.cdata),w(this,"onclosecdata"),this.cdata="",this.state=_.TEXT):"]"===r?this.cdata+="]":(this.cdata+="]]"+r,this.state=_.CDATA);continue;case _.PROC_INST:"?"===r?this.state=_.PROC_INST_ENDING:m(r)?this.state=_.PROC_INST_BODY:this.procInstName+=r;continue;case _.PROC_INST_BODY:if(!this.procInstBody&&m(r))continue;"?"===r?this.state=_.PROC_INST_ENDING:this.procInstBody+=r;continue;case _.PROC_INST_ENDING:">"===r?(w(this,"onprocessinginstruction",{name:this.procInstName,body:this.procInstBody}),this.procInstName=this.procInstBody="",this.state=_.TEXT):(this.procInstBody+="?"+r,this.state=_.PROC_INST_BODY);continue;case _.OPEN_TAG:b(u,r)?this.tagName+=r:(x(this),">"===r?B(this):"/"===r?this.state=_.OPEN_TAG_SLASH:(m(r)||L(this,"Invalid character in tag name"),this.state=_.ATTRIB));continue;case _.OPEN_TAG_SLASH:">"===r?(B(this,!0),S(this)):(L(this,"Forward-slash in opening tag not followed by >"),this.state=_.ATTRIB);continue;case _.ATTRIB:if(m(r))continue;">"===r?B(this):"/"===r?this.state=_.OPEN_TAG_SLASH:b(c,r)?(this.attribName=r,this.attribValue="",this.state=_.ATTRIB_NAME):L(this,"Invalid attribute name");continue;case _.ATTRIB_NAME:"="===r?this.state=_.ATTRIB_VALUE:">"===r?(L(this,"Attribute without value"),this.attribValue=this.attribName,C(this),B(this)):m(r)?this.state=_.ATTRIB_NAME_SAW_WHITE:b(u,r)?this.attribName+=r:L(this,"Invalid attribute name");continue;case _.ATTRIB_NAME_SAW_WHITE:if("="===r)this.state=_.ATTRIB_VALUE;else{if(m(r))continue;L(this,"Attribute without value"),this.tag.attributes[this.attribName]="",this.attribValue="",w(this,"onattribute",{name:this.attribName,value:""}),this.attribName="",">"===r?B(this):b(c,r)?(this.attribName=r,this.state=_.ATTRIB_NAME):(L(this,"Invalid attribute name"),this.state=_.ATTRIB)}continue;case _.ATTRIB_VALUE:if(m(r))continue;h(r)?(this.q=r,this.state=_.ATTRIB_VALUE_QUOTED):(L(this,"Unquoted attribute value"),this.state=_.ATTRIB_VALUE_UNQUOTED,this.attribValue=r);continue;case _.ATTRIB_VALUE_QUOTED:if(r!==this.q){"&"===r?this.state=_.ATTRIB_VALUE_ENTITY_Q:this.attribValue+=r;continue}C(this),this.q="",this.state=_.ATTRIB_VALUE_CLOSED;continue;case _.ATTRIB_VALUE_CLOSED:m(r)?this.state=_.ATTRIB:">"===r?B(this):"/"===r?this.state=_.OPEN_TAG_SLASH:b(c,r)?(L(this,"No whitespace between attributes"),this.attribName=r,this.attribValue="",this.state=_.ATTRIB_NAME):L(this,"Invalid attribute name");continue;case _.ATTRIB_VALUE_UNQUOTED:if(!f(r)){"&"===r?this.state=_.ATTRIB_VALUE_ENTITY_U:this.attribValue+=r;continue}C(this),">"===r?B(this):this.state=_.ATTRIB;continue;case _.CLOSE_TAG:if(this.tagName)">"===r?S(this):b(u,r)?this.tagName+=r:this.script?(this.script+="</"+this.tagName,this.tagName="",this.state=_.SCRIPT):(m(r)||L(this,"Invalid tagname in closing tag"),this.state=_.CLOSE_TAG_SAW_WHITE);else{if(m(r))continue;g(c,r)?this.script?(this.script+="</"+r,this.state=_.SCRIPT):L(this,"Invalid tagname in closing tag."):this.tagName=r}continue;case _.CLOSE_TAG_SAW_WHITE:if(m(r))continue;">"===r?S(this):L(this,"Invalid characters in closing tag");continue;case _.TEXT_ENTITY:case _.ATTRIB_VALUE_ENTITY_Q:case _.ATTRIB_VALUE_ENTITY_U:var n,l;switch(this.state){case _.TEXT_ENTITY:n=_.TEXT,l="textNode";break;case _.ATTRIB_VALUE_ENTITY_Q:n=_.ATTRIB_VALUE_QUOTED,l="attribValue";break;case _.ATTRIB_VALUE_ENTITY_U:n=_.ATTRIB_VALUE_UNQUOTED,l="attribValue"}";"===r?(this[l]+=F(this),this.entity="",this.state=n):b(this.entity.length?p:d,r)?this.entity+=r:(L(this,"Invalid character in entity name"),this[l]+="&"+this.entity+r,this.entity="",this.state=n);continue;default:throw new Error(this,"Unknown state: "+this.state)}this.position>=this.bufferCheckPosition&&function(t){for(var i=Math.max(e.MAX_BUFFER_LENGTH,10),r=0,s=0,o=a.length;s<o;s++){var n=t[a[s]].length;if(n>i)switch(a[s]){case"textNode":N(t);break;case"cdata":w(t,"oncdata",t.cdata),t.cdata="";break;case"script":w(t,"onscript",t.script),t.script="";break;default:A(t,"Max buffer length exceeded: "+a[s])}r=Math.max(r,n)}var l=e.MAX_BUFFER_LENGTH-r;t.bufferCheckPosition=l+t.position}(this);return this}
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */,resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var e;N(e=this),""!==e.cdata&&(w(e,"oncdata",e.cdata),e.cdata=""),""!==e.script&&(w(e,"onscript",e.script),e.script="")}};try{t=i(0).Stream}catch(e){t=function(){}}var s=e.EVENTS.filter((function(e){return"error"!==e&&"end"!==e}));function o(e,i){if(!(this instanceof o))return new o(e,i);t.apply(this),this._parser=new r(e,i),this.writable=!0,this.readable=!0;var a=this;this._parser.onend=function(){a.emit("end")},this._parser.onerror=function(e){a.emit("error",e),a._parser.error=null},this._decoder=null,s.forEach((function(e){Object.defineProperty(a,"on"+e,{get:function(){return a._parser["on"+e]},set:function(t){if(!t)return a.removeAllListeners(e),a._parser["on"+e]=t,t;a.on(e,t)},enumerable:!0,configurable:!1})}))}o.prototype=Object.create(t.prototype,{constructor:{value:o}}),o.prototype.write=function(e){if("function"==typeof Buffer&&"function"==typeof Buffer.isBuffer&&Buffer.isBuffer(e)){if(!this._decoder){var t=i(10).StringDecoder;this._decoder=new t("utf8")}e=this._decoder.write(e)}return this._parser.write(e.toString()),this.emit("data",e),!0},o.prototype.end=function(e){return e&&e.length&&this.write(e),this._parser.end(),!0},o.prototype.on=function(e,i){var a=this;return a._parser["on"+e]||-1===s.indexOf(e)||(a._parser["on"+e]=function(){var t=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);t.splice(0,0,e),a.emit.apply(a,t)}),t.prototype.on.call(a,e,i)};var n="http://www.w3.org/XML/1998/namespace",l={xml:n,xmlns:"http://www.w3.org/2000/xmlns/"},c=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,u=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/,d=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,p=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;function m(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}function h(e){return'"'===e||"'"===e}function f(e){return">"===e||m(e)}function b(e,t){return e.test(t)}function g(e,t){return!b(e,t)}var T,y,E,_=0;for(var v in e.STATE={BEGIN:_++,BEGIN_WHITESPACE:_++,TEXT:_++,TEXT_ENTITY:_++,OPEN_WAKA:_++,SGML_DECL:_++,SGML_DECL_QUOTED:_++,DOCTYPE:_++,DOCTYPE_QUOTED:_++,DOCTYPE_DTD:_++,DOCTYPE_DTD_QUOTED:_++,COMMENT_STARTING:_++,COMMENT:_++,COMMENT_ENDING:_++,COMMENT_ENDED:_++,CDATA:_++,CDATA_ENDING:_++,CDATA_ENDING_2:_++,PROC_INST:_++,PROC_INST_BODY:_++,PROC_INST_ENDING:_++,OPEN_TAG:_++,OPEN_TAG_SLASH:_++,ATTRIB:_++,ATTRIB_NAME:_++,ATTRIB_NAME_SAW_WHITE:_++,ATTRIB_VALUE:_++,ATTRIB_VALUE_QUOTED:_++,ATTRIB_VALUE_CLOSED:_++,ATTRIB_VALUE_UNQUOTED:_++,ATTRIB_VALUE_ENTITY_Q:_++,ATTRIB_VALUE_ENTITY_U:_++,CLOSE_TAG:_++,CLOSE_TAG_SAW_WHITE:_++,SCRIPT:_++,SCRIPT_ENDING:_++},e.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},e.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(e.ENTITIES).forEach((function(t){var i=e.ENTITIES[t],a="number"==typeof i?String.fromCharCode(i):i;e.ENTITIES[t]=a})),e.STATE)e.STATE[e.STATE[v]]=v;function I(e,t,i){e[t]&&e[t](i)}function w(e,t,i){e.textNode&&N(e),I(e,t,i)}function N(e){e.textNode=D(e.opt,e.textNode),e.textNode&&I(e,"ontext",e.textNode),e.textNode=""}function D(e,t){return e.trim&&(t=t.trim()),e.normalize&&(t=t.replace(/\s+/g," ")),t}function A(e,t){return N(e),e.trackPosition&&(t+="\nLine: "+e.line+"\nColumn: "+e.column+"\nChar: "+e.c),t=new Error(t),e.error=t,I(e,"onerror",t),e}function R(e){return e.sawRoot&&!e.closedRoot&&L(e,"Unclosed root tag"),e.state!==_.BEGIN&&e.state!==_.BEGIN_WHITESPACE&&e.state!==_.TEXT&&A(e,"Unexpected end"),N(e),e.c="",e.closed=!0,I(e,"onend"),r.call(e,e.strict,e.opt),e}function L(e,t){if("object"!=typeof e||!(e instanceof r))throw new Error("bad call to strictFail");e.strict&&A(e,t)}function x(e){e.strict||(e.tagName=e.tagName[e.looseCase]());var t=e.tags[e.tags.length-1]||e,i=e.tag={name:e.tagName,attributes:{}};e.opt.xmlns&&(i.ns=t.ns),e.attribList.length=0,w(e,"onopentagstart",i)}function O(e,t){var i=e.indexOf(":")<0?["",e]:e.split(":"),a=i[0],r=i[1];return t&&"xmlns"===e&&(a="xmlns",r=""),{prefix:a,local:r}}function C(e){if(e.strict||(e.attribName=e.attribName[e.looseCase]()),-1!==e.attribList.indexOf(e.attribName)||e.tag.attributes.hasOwnProperty(e.attribName))e.attribName=e.attribValue="";else{if(e.opt.xmlns){var t=O(e.attribName,!0),i=t.prefix,a=t.local;if("xmlns"===i)if("xml"===a&&e.attribValue!==n)L(e,"xml: prefix must be bound to "+n+"\nActual: "+e.attribValue);else if("xmlns"===a&&"http://www.w3.org/2000/xmlns/"!==e.attribValue)L(e,"xmlns: prefix must be bound to http://www.w3.org/2000/xmlns/\nActual: "+e.attribValue);else{var r=e.tag,s=e.tags[e.tags.length-1]||e;r.ns===s.ns&&(r.ns=Object.create(s.ns)),r.ns[a]=e.attribValue}e.attribList.push([e.attribName,e.attribValue])}else e.tag.attributes[e.attribName]=e.attribValue,w(e,"onattribute",{name:e.attribName,value:e.attribValue});e.attribName=e.attribValue=""}}function B(e,t){if(e.opt.xmlns){var i=e.tag,a=O(e.tagName);i.prefix=a.prefix,i.local=a.local,i.uri=i.ns[a.prefix]||"",i.prefix&&!i.uri&&(L(e,"Unbound namespace prefix: "+JSON.stringify(e.tagName)),i.uri=a.prefix);var r=e.tags[e.tags.length-1]||e;i.ns&&r.ns!==i.ns&&Object.keys(i.ns).forEach((function(t){w(e,"onopennamespace",{prefix:t,uri:i.ns[t]})}));for(var s=0,o=e.attribList.length;s<o;s++){var n=e.attribList[s],l=n[0],c=n[1],u=O(l,!0),d=u.prefix,p=u.local,m=""===d?"":i.ns[d]||"",h={name:l,value:c,prefix:d,local:p,uri:m};d&&"xmlns"!==d&&!m&&(L(e,"Unbound namespace prefix: "+JSON.stringify(d)),h.uri=d),e.tag.attributes[l]=h,w(e,"onattribute",h)}e.attribList.length=0}e.tag.isSelfClosing=!!t,e.sawRoot=!0,e.tags.push(e.tag),w(e,"onopentag",e.tag),t||(e.noscript||"script"!==e.tagName.toLowerCase()?e.state=_.TEXT:e.state=_.SCRIPT,e.tag=null,e.tagName=""),e.attribName=e.attribValue="",e.attribList.length=0}function S(e){if(!e.tagName)return L(e,"Weird empty close tag."),e.textNode+="</>",void(e.state=_.TEXT);if(e.script){if("script"!==e.tagName)return e.script+="</"+e.tagName+">",e.tagName="",void(e.state=_.SCRIPT);w(e,"onscript",e.script),e.script=""}var t=e.tags.length,i=e.tagName;e.strict||(i=i[e.looseCase]());for(var a=i;t--;){if(e.tags[t].name===a)break;L(e,"Unexpected close tag")}if(t<0)return L(e,"Unmatched closing tag: "+e.tagName),e.textNode+="</"+e.tagName+">",void(e.state=_.TEXT);e.tagName=i;for(var r=e.tags.length;r-- >t;){var s=e.tag=e.tags.pop();e.tagName=e.tag.name,w(e,"onclosetag",e.tagName);var o={};for(var n in s.ns)o[n]=s.ns[n];var l=e.tags[e.tags.length-1]||e;e.opt.xmlns&&s.ns!==l.ns&&Object.keys(s.ns).forEach((function(t){var i=s.ns[t];w(e,"onclosenamespace",{prefix:t,uri:i})}))}0===t&&(e.closedRoot=!0),e.tagName=e.attribValue=e.attribName="",e.attribList.length=0,e.state=_.TEXT}function F(e){var t,i=e.entity,a=i.toLowerCase(),r="";return e.ENTITIES[i]?e.ENTITIES[i]:e.ENTITIES[a]?e.ENTITIES[a]:("#"===(i=a).charAt(0)&&("x"===i.charAt(1)?(i=i.slice(2),r=(t=parseInt(i,16)).toString(16)):(i=i.slice(1),r=(t=parseInt(i,10)).toString(10))),i=i.replace(/^0+/,""),isNaN(t)||r.toLowerCase()!==i?(L(e,"Invalid character entity"),"&"+e.entity+";"):String.fromCodePoint(t))}function q(e,t){"<"===t?(e.state=_.OPEN_WAKA,e.startTagPosition=e.position):m(t)||(L(e,"Non-whitespace before first tag."),e.textNode=t,e.state=_.TEXT)}function P(e,t){var i="";return t<e.length&&(i=e.charAt(t)),i}_=e.STATE,String.fromCodePoint||(T=String.fromCharCode,y=Math.floor,E=function(){var e,t,i=16384,a=[],r=-1,s=arguments.length;if(!s)return"";for(var o="";++r<s;){var n=Number(arguments[r]);if(!isFinite(n)||n<0||n>1114111||y(n)!==n)throw RangeError("Invalid code point: "+n);n<=65535?a.push(n):(e=55296+((n-=65536)>>10),t=n%1024+56320,a.push(e,t)),(r+1===s||a.length>i)&&(o+=T.apply(null,a),a.length=0)}return o},Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:E,configurable:!0,writable:!0}):String.fromCodePoint=E)}(t)},function(e,t,i){const a=i(1),r=i(2),s=i(4);t.cache=new Map,t.getTokens=async(e,i)=>{let a=t.cache.get(e);if(a)return a;{let[,a]=await r.promise(e,i.requestOptions);const s=t.extractActions(a);if(!s||!s.length)throw Error("Could not extract signature deciphering actions");return t.cache.set(e,s),s}},t.decipher=(e,t)=>{t=t.split("");for(let i=0,a=e.length;i<a;i++){let a,r=e[i];switch(r[0]){case"r":t=t.reverse();break;case"w":a=~~r.slice(1),t=o(t,a);break;case"s":a=~~r.slice(1),t=t.slice(a);break;case"p":a=~~r.slice(1),t.splice(0,a)}}return t.join("")};const o=(e,t)=>{const i=e[0];return e[0]=e[t%e.length],e[t]=i,e},n="[a-zA-Z_\\$][a-zA-Z_0-9]*",l="(?:'[^'\\\\]*(:?\\\\[\\s\\S][^'\\\\]*)*'|\"[^\"\\\\]*(:?\\\\[\\s\\S][^\"\\\\]*)*\")",c=`(?:${n}|${l})`,u=`(?:\\.${n}|\\[${l}\\])`,d=":function\\(a\\)\\{(?:return )?a\\.reverse\\(\\)\\}",p=":function\\(a,b\\)\\{return a\\.slice\\(b\\)\\}",m=":function\\(a,b\\)\\{a\\.splice\\(0,b\\)\\}",h=":function\\(a,b\\)\\{var c=a\\[0\\];a\\[0\\]=a\\[b(?:%a\\.length)?\\];a\\[b(?:%a\\.length)?\\]=c(?:;return a)?\\}",f=new RegExp(`var (${n})=\\{((?:(?:${c}${d}|${c}${p}|${c}${m}|${c}${h}),?\\r?\\n?)+)\\};`),b=new RegExp(`function(?: ${n})?\\(a\\)\\{a=a\\.split\\((?:''|"")\\);\\s*((?:(?:a=)?[a-zA-Z_\\$][a-zA-Z_0-9]*${u}\\(a,\\d+\\);)+)return a\\.join\\((?:''|"")\\)\\}`),g=new RegExp(`(?:^|,)(${c})${d}`,"m"),T=new RegExp(`(?:^|,)(${c})${p}`,"m"),y=new RegExp(`(?:^|,)(${c})${m}`,"m"),E=new RegExp(`(?:^|,)(${c})${h}`,"m");t.extractActions=e=>{const t=f.exec(e),i=b.exec(e);if(!t||!i)return null;const a=t[1].replace(/\$/g,"\\$"),r=t[2].replace(/\$/g,"\\$"),s=i[1].replace(/\$/g,"\\$");let o=g.exec(r);const n=o&&o[1].replace(/\$/g,"\\$").replace(/\$|^'|^"|'$|"$/g,"");o=T.exec(r);const l=o&&o[1].replace(/\$/g,"\\$").replace(/\$|^'|^"|'$|"$/g,"");o=y.exec(r);const c=o&&o[1].replace(/\$/g,"\\$").replace(/\$|^'|^"|'$|"$/g,"");o=E.exec(r);const u=o&&o[1].replace(/\$/g,"\\$").replace(/\$|^'|^"|'$|"$/g,""),d=`(${[n,l,c,u].join("|")})`,p=new RegExp(`(?:a=)?${a}(?:\\.${d}|\\['${d}'\\]|\\["${d}"\\])\\(a,(\\d+)\\)`,"g"),m=[];for(;null!==(o=p.exec(s));){switch(o[1]||o[2]||o[3]){case u:m.push("w"+o[4]);break;case n:m.push("r");break;case l:m.push("s"+o[4]);break;case c:m.push("p"+o[4])}}return m},t.setDownloadURL=(e,t,i)=>{let r;if(!e.url)return void(i&&console.warn("Download url not found for itag "+e.itag));r=e.url;try{r=decodeURIComponent(r)}catch(e){return void(i&&console.warn("Could not decode url: "+e.message))}const s=a.parse(r,!0);delete s.search;let o=s.query;o.ratebypass="yes",t&&(o[e.sp||"signature"]=t),e.url=a.format(s)},t.decipherFormats=async(e,i,a)=>{let r={},o=await t.getTokens(i,a);return e.forEach(e=>{let i=e.signatureCipher||e.cipher;i&&(Object.assign(e,s.parse(i)),delete e.signatureCipher,delete e.cipher);const n=o&&e.s?t.decipher(o,e.s):null;t.setDownloadURL(e,n,a.debug),r[e.itag]=e}),r}},function(e,t,i){const a=i(0).PassThrough,r=i(9),s=i(5),o=i(7),n=i(2),l=i(16),c=i(3),u=(e,t)=>{const i=d(t);return u.getInfo(e,t,(e,a)=>{e?i.emit("error",e):p(i,a,t)}),i};e.exports=u,u.getBasicInfo=r.getBasicInfo,u.getInfo=r.getFullInfo,u.chooseFormat=s.chooseFormat,u.filterFormats=s.filterFormats,u.validateID=s.validateID,u.validateURL=s.validateURL,u.getURLVideoID=s.getURLVideoID,u.getVideoID=s.getVideoID,u.cache={sig:o.cache,info:r.cache};const d=e=>{const t=new a({highWaterMark:e&&e.highWaterMark||524288});return t.destroy=()=>{t._isDestroyed=!0},t},p=(e,t,i)=>{i=i||{};let a,r=s.playError(t,"UNPLAYABLE");if(r)return void e.emit("error",r);if(!t.formats.length)return void e.emit("error",Error("This video is unavailable"));try{a=s.chooseFormat(t.formats,i)}catch(t){return void e.emit("error",t)}if(e.emit("info",t,a),e._isDestroyed)return;let o,u=0;const d=t=>{u+=t.length,e.emit("progress",t.length,u,o)};let p;if(a.isHLS||a.isDashMPD)p=l(a.url,{chunkReadahead:+t.live_chunk_readahead,begin:i.begin||a.live&&Date.now(),liveBuffer:i.liveBuffer,requestOptions:i.requestOptions,parser:a.isDashMPD?"dash-mpd":"m3u8",id:a.itag}),p.on("progress",(t,i)=>{e.emit("progress",t.size,t.num,i)});else{i.begin&&(a.url+="&begin="+c.humanStr(i.begin));let t=Object.assign({},i.requestOptions,{maxReconnects:6,maxRetries:3,backoff:{inc:500,max:1e4}});i.range&&(i.range.start||i.range.end)&&(t.headers=Object.assign({},t.headers,{Range:`bytes=${i.range.start||"0"}-${i.range.end||""}`})),p=n(a.url,t),p.on("response",t=>{e._isDestroyed||o||(o=parseInt(t.headers["content-length"],10))}),p.on("data",d)}e.destroy=()=>{e._isDestroyed=!0,p.abort&&p.abort(),p.end(),p.removeListener("data",d),p.unpipe()},["abort","request","response","error","retry","reconnect"].forEach(t=>{p.prependListener(t,i=>{e.emit(t,i)})}),p.pipe(e)};u.downloadFromInfo=(e,t)=>{const i=d(t);if(!e.full)throw Error("Cannot use `ytdl.downloadFromInfo()` when called with info from `ytdl.getBasicInfo()`");return setImmediate(()=>{p(i,e,t)}),i}},function(e,t,i){const a=i(1),r=i(4),s=i(6),o=i(2),n=i(5),l=i(14),c=i(7),u=i(15),d="https://www.youtube.com/watch?v=";t.getBasicInfo=async(e,t)=>{const i="hl="+(t.lang||"en");let a=`${d+e}&${i}&bpctr=${Math.ceil(Date.now()/1e3)}&pbj=1`;const r=Object.assign({},t.requestOptions);r.headers=Object.assign({},r.headers,{"x-youtube-client-name":"1","x-youtube-client-version":"2.20191008.04.01"});let s,[,l]=await o.promise(a,r);try{s=JSON.parse(l).reduce((e,t)=>Object.assign(t,e),{})}catch(e){throw Error("Error parsing info: "+e.message)}let c=n.playError(s,"ERROR");if(c)throw c;if(!s.player){let a=`${"https://www.youtube.com/embed/"+e}?${i}`;[,l]=await o.promise(a,t.requestOptions);let r,u=n.between(l,"t.setConfig({'PLAYER_CONFIG': ","<\/script>");if(!u)throw Error("Could not find player config");try{r=JSON.parse(n.cutAfterJSON(u))}catch(e){throw Error("Error parsing config: "+e.message)}if(c=n.playError(s,"LOGIN_REQUIRED"),!r.args.player_response&&!r.args.embedded_player_response&&c)throw c;s.player=r}return p(e,t,s,l)};const p=async(e,t,i,s)=>{const c=a.format({protocol:"https",host:"www.youtube.com",pathname:"/get_video_info",query:{video_id:e,eurl:"https://youtube.googleapis.com/v/"+e,ps:"default",gl:"US",hl:t.lang||"en",sts:i.sts}});let[,u]=await o.promise(c,t.requestOptions),p=r.parse(u);const m=i.player&&i.player.args&&i.player.args.player_response||p.player_response||i.playerResponse;if("fail"===p.status)throw Error(`Code ${p.errorcode}: ${n.stripHTML(p.reason)}`);if("object"==typeof m)i.player_response=m;else try{i.player_response=JSON.parse(m)}catch(e){throw Error("Error parsing `player_response`: "+e.message)}i.formats=(e=>{let t=[];return e.player_response.streamingData&&(e.player_response.streamingData.formats&&(t=t.concat(e.player_response.streamingData.formats)),e.player_response.streamingData.adaptiveFormats&&(t=t.concat(e.player_response.streamingData.adaptiveFormats))),t})(i);let h=i.player_response.videoDetails;return Object.assign(i,{author:l.getAuthor(i),published:Date.parse(i.player_response.microformat.playerMicroformatRenderer.publishDate),description:h.shortDescription,media:l.getMedia(s),related_videos:l.getRelatedVideos(i),likes:l.getLikes(s),dislikes:l.getDislikes(s),video_id:h.videoId,video_url:d+h.videoId,title:h.title,length_seconds:h.lengthSeconds,age_restricted:!(!i.player.args||!i.player.args.is_embed),html5player:i.player&&i.player.assets&&i.player.assets.js}),i};t.getFullInfo=async(e,i)=>{let r=await t.getBasicInfo(e,i);const s=r.player_response&&r.player_response.streamingData&&(r.player_response.streamingData.dashManifestUrl||r.player_response.streamingData.hlsManifestUrl);let o=[];if(r.formats.length){const e=a.resolve(d,r.html5player);o.push(c.decipherFormats(r.formats,e,i))}if(s&&r.player_response.streamingData.dashManifestUrl){let e=r.player_response.streamingData.dashManifestUrl;o.push(m(e,i))}if(s&&r.player_response.streamingData.hlsManifestUrl){let e=r.player_response.streamingData.hlsManifestUrl;o.push(h(e,i))}let l=await Promise.all(o);return r.formats=Object.values(Object.assign({},...l)),r.formats=r.formats.map(n.addFormatMeta),r.formats.sort(n.sortFormats),r.full=!0,r};const m=(e,t)=>new Promise((i,r)=>{let n={};const l=s.parser(!1);l.onerror=r,l.onopentag=t=>{if("REPRESENTATION"===t.name){const i=parseInt(t.attributes.ID);n[i]={itag:i,url:e}}},l.onend=()=>{i(n)};const c=o(a.resolve(d,e),t.requestOptions);c.setEncoding("utf8"),c.on("error",r),c.on("data",e=>{l.write(e)}),c.on("end",l.close.bind(l))}),h=async(e,t)=>{e=a.resolve(d,e);let[,i]=await o.promise(e,t.requestOptions),r={};return i.split("\n").filter(e=>/https?:\/\//.test(e)).forEach(e=>{const t=parseInt(e.match(/\/itag\/(\d+)\//)[1]);r[t]={itag:t,url:e}}),r};t.cache=new u;for(let e of["getBasicInfo","getFullInfo"]){const i=t[e];t[e]=async(a,r,s)=>{if("function"==typeof r?(s=r,r={}):r||(r={}),s)return t[e](a,r).then(e=>s(null,e),s);let o=n.getVideoID(a);const l=[e,o,r.lang].join("-");if(t.cache.get(l))return t.cache.get(l);{let e=await i(o,r);return t.cache.set(l,e),e}}}t.validateID=n.validateID,t.validateURL=n.validateURL,t.getURLVideoID=n.getURLVideoID,t.getVideoID=n.getVideoID},function(e,t){e.exports=require("string_decoder")},function(e,t){e.exports=require("http")},function(e,t){e.exports=require("https")},function(e,t){e.exports={5:{mimeType:'video/flv; codecs="Sorenson H.283, mp3"',qualityLabel:"240p",bitrate:25e4,audioBitrate:64},6:{mimeType:'video/flv; codecs="Sorenson H.263, mp3"',qualityLabel:"270p",bitrate:8e5,audioBitrate:64},13:{mimeType:'video/3gp; codecs="MPEG-4 Visual, aac"',qualityLabel:null,bitrate:5e5,audioBitrate:null},17:{mimeType:'video/3gp; codecs="MPEG-4 Visual, aac"',qualityLabel:"144p",bitrate:5e4,audioBitrate:24},18:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"360p",bitrate:5e5,audioBitrate:96},22:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"720p",bitrate:2e6,audioBitrate:192},34:{mimeType:'video/flv; codecs="H.264, aac"',qualityLabel:"360p",bitrate:5e5,audioBitrate:128},35:{mimeType:'video/flv; codecs="H.264, aac"',qualityLabel:"480p",bitrate:8e5,audioBitrate:128},36:{mimeType:'video/3gp; codecs="MPEG-4 Visual, aac"',qualityLabel:"240p",bitrate:175e3,audioBitrate:32},37:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"1080p",bitrate:3e6,audioBitrate:192},38:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"3072p",bitrate:35e5,audioBitrate:192},43:{mimeType:'video/webm; codecs="VP8, vorbis"',qualityLabel:"360p",bitrate:5e5,audioBitrate:128},44:{mimeType:'video/webm; codecs="VP8, vorbis"',qualityLabel:"480p",bitrate:1e6,audioBitrate:128},45:{mimeType:'video/webm; codecs="VP8, vorbis"',qualityLabel:"720p",bitrate:2e6,audioBitrate:192},46:{mimeType:'audio/webm; codecs="vp8, vorbis"',qualityLabel:"1080p",bitrate:null,audioBitrate:192},82:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"360p",bitrate:5e5,audioBitrate:96},83:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"240p",bitrate:5e5,audioBitrate:96},84:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"720p",bitrate:2e6,audioBitrate:192},85:{mimeType:'video/mp4; codecs="H.264, aac"',qualityLabel:"1080p",bitrate:3e6,audioBitrate:192},91:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"144p",bitrate:1e5,audioBitrate:48},92:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"240p",bitrate:15e4,audioBitrate:48},93:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"360p",bitrate:5e5,audioBitrate:128},94:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"480p",bitrate:8e5,audioBitrate:128},95:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"720p",bitrate:15e5,audioBitrate:256},96:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"1080p",bitrate:25e5,audioBitrate:256},100:{mimeType:'audio/webm; codecs="VP8, vorbis"',qualityLabel:"360p",bitrate:null,audioBitrate:128},101:{mimeType:'audio/webm; codecs="VP8, vorbis"',qualityLabel:"360p",bitrate:null,audioBitrate:192},102:{mimeType:'audio/webm; codecs="VP8, vorbis"',qualityLabel:"720p",bitrate:null,audioBitrate:192},120:{mimeType:'video/flv; codecs="H.264, aac"',qualityLabel:"720p",bitrate:2e6,audioBitrate:128},127:{mimeType:'audio/ts; codecs="aac"',qualityLabel:null,bitrate:null,audioBitrate:96},128:{mimeType:'audio/ts; codecs="aac"',qualityLabel:null,bitrate:null,audioBitrate:96},132:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"240p",bitrate:15e4,audioBitrate:48},133:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"240p",bitrate:2e5,audioBitrate:null},134:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"360p",bitrate:3e5,audioBitrate:null},135:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"480p",bitrate:5e5,audioBitrate:null},136:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"720p",bitrate:1e6,audioBitrate:null},137:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"1080p",bitrate:25e5,audioBitrate:null},138:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"4320p",bitrate:135e5,audioBitrate:null},139:{mimeType:'audio/mp4; codecs="aac"',qualityLabel:null,bitrate:null,audioBitrate:48},140:{mimeType:'audio/m4a; codecs="aac"',qualityLabel:null,bitrate:null,audioBitrate:128},141:{mimeType:'audio/mp4; codecs="aac"',qualityLabel:null,bitrate:null,audioBitrate:256},151:{mimeType:'video/ts; codecs="H.264, aac"',qualityLabel:"720p",bitrate:5e4,audioBitrate:24},160:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"144p",bitrate:1e5,audioBitrate:null},171:{mimeType:'audio/webm; codecs="vorbis"',qualityLabel:null,bitrate:null,audioBitrate:128},172:{mimeType:'audio/webm; codecs="vorbis"',qualityLabel:null,bitrate:null,audioBitrate:192},242:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"240p",bitrate:1e5,audioBitrate:null},243:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"360p",bitrate:25e4,audioBitrate:null},244:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"480p",bitrate:5e5,audioBitrate:null},247:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"720p",bitrate:7e5,audioBitrate:null},248:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"1080p",bitrate:15e5,audioBitrate:null},249:{mimeType:'audio/webm; codecs="opus"',qualityLabel:null,bitrate:null,audioBitrate:48},250:{mimeType:'audio/webm; codecs="opus"',qualityLabel:null,bitrate:null,audioBitrate:64},251:{mimeType:'audio/webm; codecs="opus"',qualityLabel:null,bitrate:null,audioBitrate:160},264:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"1440p",bitrate:4e6,audioBitrate:null},266:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"2160p",bitrate:125e5,audioBitrate:null},271:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"1440p",bitrate:9e6,audioBitrate:null},272:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"4320p",bitrate:2e7,audioBitrate:null},278:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"144p 15fps",bitrate:8e4,audioBitrate:null},298:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"720p",bitrate:3e6,audioBitrate:null},299:{mimeType:'video/mp4; codecs="H.264"',qualityLabel:"1080p",bitrate:55e5,audioBitrate:null},302:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"720p HFR",bitrate:25e5,audioBitrate:null},303:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"1080p HFR",bitrate:5e6,audioBitrate:null},308:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"1440p HFR",bitrate:1e7,audioBitrate:null},313:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"2160p",bitrate:13e6,audioBitrate:null},315:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"2160p HFR",bitrate:2e7,audioBitrate:null},330:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"144p HDR, HFR",bitrate:8e4,audioBitrate:null},331:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"240p HDR, HFR",bitrate:1e5,audioBitrate:null},332:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"360p HDR, HFR",bitrate:25e4,audioBitrate:null},333:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"240p HDR, HFR",bitrate:5e5,audioBitrate:null},334:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"720p HDR, HFR",bitrate:1e6,audioBitrate:null},335:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"1080p HDR, HFR",bitrate:15e5,audioBitrate:null},336:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"1440p HDR, HFR",bitrate:5e6,audioBitrate:null},337:{mimeType:'video/webm; codecs="VP9"',qualityLabel:"2160p HDR, HFR",bitrate:12e6,audioBitrate:null}}},function(e,t,i){const a=i(5),r=i(4),s=i(1),o=i(3),n="https://www.youtube.com/watch?v=";t.getMedia=e=>{let t={},i=[];try{i=e.response.contents.twoColumnWatchNextResults.results.results.contents}catch(e){}let a=i.find(e=>e.videoSecondaryInfoRenderer);if(!a)return{};try{let e=(a.metadataRowContainer||a.videoSecondaryInfoRenderer.metadataRowContainer).metadataRowContainerRenderer.rows;for(let i of e)if(i.metadataRowRenderer){let e=i.metadataRowRenderer.title.simpleText.toLowerCase(),a=i.metadataRowRenderer.contents[0],r=a.runs;t[e]=r?r[0].text:a.simpleText,r&&r[0].navigationEndpoint&&(t[e+"_url"]=s.resolve(n,r[0].navigationEndpoint.commandMetadata.webCommandMetadata.url))}else if(i.richMetadataRowRenderer){let e=i.richMetadataRowRenderer.contents;for(let i of e){let e=i.richMetadataRenderer;t.thumbnails=e.thumbnail.thumbnails,t.image=s.resolve(n,t.thumbnails[0].url)}let a=e.filter(e=>"RICH_METADATA_RENDERER_STYLE_BOX_ART"===e.richMetadataRenderer.style);for(let{richMetadataRenderer:e}of a){let i=e;t.year=i.subtitle.simpleText;let a=i.callToAction.simpleText.split(" ")[1];t[a]=i.title.simpleText,t[a+"_url"]=s.resolve(n,i.endpoint.commandMetadata.webCommandMetadata.url)}}}catch(e){}return t},t.getAuthor=e=>{let t,i,r,o=!1;try{let l=e.response.contents.twoColumnWatchNextResults.results.results.contents.find(e=>e.videoSecondaryInfoRenderer&&e.videoSecondaryInfoRenderer.owner&&e.videoSecondaryInfoRenderer.owner.videoOwnerRenderer).videoSecondaryInfoRenderer.owner.videoOwnerRenderer;t=l.navigationEndpoint.browseEndpoint.browseId,i=s.resolve(n,l.thumbnail.thumbnails[0].url),r=a.parseAbbreviatedNumber(l.subscriberCountText.runs[0].text),o=!!l.badges.find(e=>"Verified"===e.metadataBadgeRenderer.tooltip)}catch(e){}try{let a=e.player_response.microformat.playerMicroformatRenderer,l=a.channelId||t;return{id:l,name:a.ownerChannelName,user:a.ownerProfileUrl.split("/").slice(-1)[0],channel_url:"https://www.youtube.com/channel/"+l,external_channel_url:"https://www.youtube.com/channel/"+a.externalChannelId,user_url:s.resolve(n,a.ownerProfileUrl),avatar:i,verified:o,subscriber_count:r}}catch(e){return{}}},t.getRelatedVideos=e=>{let t,i=[];try{i=e.response.webWatchNextResponseExtensionData.relatedVideoArgs.split(",").map(e=>r.parse(e))}catch(e){}try{t=e.response.contents.twoColumnWatchNextResults.secondaryResults.secondaryResults.results}catch(e){return[]}let a=[];for(let e of t){let t=e.compactVideoRenderer;if(t)try{let e=t.viewCountText.simpleText,r=t.shortViewCountText.simpleText,s=i.find(e=>e.id===t.videoId);/^\d/.test(r)||(r=s&&s.short_view_count_text||""),e=(/^\d/.test(e)?e:r).split(" ")[0],a.push({id:t.videoId,title:t.title.simpleText,author:t.shortBylineText.runs[0].text,ucid:t.shortBylineText.runs[0].navigationEndpoint.browseEndpoint.browseId,author_thumbnail:t.channelThumbnail.thumbnails[0].url,short_view_count_text:r.split(" ")[0],view_count:e.replace(",",""),length_seconds:t.lengthText?Math.floor(o.humanStr(t.lengthText.simpleText)/1e3):i&&""+i.length_seconds,video_thumbnail:t.thumbnail.thumbnails[0].url})}catch(e){continue}}return a};const l=/"label":"([\d,]+?) likes"/;t.getLikes=e=>{const t=e.match(l);return t?parseInt(t[1].replace(/,/g,"")):null};const c=/"label":"([\d,]+?) dislikes"/;t.getDislikes=e=>{const t=e.match(c);return t?parseInt(t[1].replace(/,/g,"")):null}},function(e,t){e.exports=class extends Map{constructor(){super(),this.timeout=1e3}set(e,t){super.set(e,{tid:setTimeout(this.delete.bind(this,e),this.timeout),value:t})}get(e){let t=super.get(e);return t?t.value:null}delete(e){let t=super.get(e);t&&(clearTimeout(t.tid),super.delete(e))}clear(){for(let e of this.values())clearTimeout(e.tid);super.clear()}}},function(e,t,i){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const r=i(0),s=i(1),o=a(i(2)),n=a(i(17)),l=a(i(18)),c=a(i(19)),u=i(3),d={m3u8:n.default,"dash-mpd":l.default};e.exports=(e,t={})=>{const i=new r.PassThrough,a=t.chunkReadahead||3,n=t.liveBuffer||2e4,l=t.requestOptions,p=d[t.parser||(/\.mpd$/.test(e)?"dash-mpd":"m3u8")];if(!p)throw TypeError(`parser '${t.parser}' not supported`);let m,h=0;void 0!==t.begin&&(h="string"==typeof t.begin?u.humanStr(t.begin):Math.max(t.begin-n,0));const f=new c.default((e,t)=>{m=e;let a=0;e.on("data",e=>a+=e.length),e.pipe(i,{end:!1}),e.on("end",()=>t(void 0,a))},{concurrency:1});let b=0,g=0;const T=new c.default((t,a)=>{let r=Object.assign({},l);t.range&&(r.headers=Object.assign({},r.headers,{Range:`bytes=${t.range.start}-${t.range.end}`}));let n=o.default(s.resolve(e,t.url),r);n.on("error",a),f.push(n,(e,r)=>{g+=+r,i.emit("progress",{num:++b,size:r,duration:t.duration,url:t.url},T.total,g),a()})},{concurrency:a}),y=e=>{N||(i.emit("error",e),i.end())};let E,_,v,I,w=!0,N=!1,D=!1;const A=e=>{if(m=null,e)y(e);else if(!w&&!N&&!D&&T.tasks.length+T.active<=E){let e=Math.max(0,_-(Date.now()-I));w=!0,v=setTimeout(O,e)}else!N&&!D||T.tasks.length||T.active||i.end()};let R,L,x=0;const O=()=>{I=Date.now(),R=o.default(e,l),R.on("error",y);const i=R.pipe(new p(t.id));i.on("starttime",e=>{x||(x=e,"string"==typeof t.begin&&h>=0&&(h+=x))}),i.on("endlist",()=>{D=!0}),i.on("endearly",R.unpipe.bind(R,i));let a=[];const r=e=>{if(!e.init){if(e.seq<=L)return;L=e.seq}h=e.time,T.push(e,A),a.push(e)};let s=[],c=0;i.on("item",e=>{let t=Object.assign({time:x},e);if(h<=t.time)r(t);else for(s.push(t),c+=t.duration;s.length>1&&c-s[0].duration>n;)c-=s.shift().duration;x+=t.duration}),i.on("end",()=>{R=null,!a.length&&s.length&&s.forEach(e=>{r(e)}),E=Math.max(1,Math.ceil(.01*a.length)),_=a.reduce((e,t)=>t.duration+e,0),w=!1,A()})};return O(),i.end=()=>{N=!0,f.die(),T.die(),clearTimeout(v),R&&(R.unpipe(),R.abort()),m&&(m.unpipe(),m.abort()),r.PassThrough.prototype.end.call(i,null)},i}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=i(0);class r extends a.Writable{constructor(){super(),this._lastLine="",this._seq=0,this._nextItemDuration=null,this._nextItemRange=null,this._lastItemRangeEnd=0,this.on("finish",()=>{this._parseLine(this._lastLine),this.emit("end")})}_parseAttrList(e){let t,i={},a=/([A-Z0-9-]+)=(?:"([^"]*?)"|([^,]*?))/g;for(;null!=(t=a.exec(e));)i[t[1]]=t[2]||t[3];return i}_parseRange(e){if(!e)return null;let t=e.split("@"),i=t[1]?parseInt(t[1]):this._lastItemRangeEnd+1,a={start:i,end:i+parseInt(t[0])-1};return this._lastItemRangeEnd=a.end,a}_parseLine(e){let t=e.match(/^#(EXT[A-Z0-9-]+)(?::(.*))?/);if(t){const e=t[1],i=t[2]||"";switch(e){case"EXT-X-PROGRAM-DATE-TIME":this.emit("starttime",new Date(i).getTime());break;case"EXT-X-MEDIA-SEQUENCE":this._seq=parseInt(i);break;case"EXT-X-MAP":{let e=this._parseAttrList(i);if(!e.URI)return void this.destroy(new Error("`EXT-X-MAP` found without required attribute `URI`"));this.emit("item",{url:e.URI,seq:this._seq,init:!0,duration:0,range:this._parseRange(e.BYTERANGE)});break}case"EXT-X-BYTERANGE":this._nextItemRange=this._parseRange(i);break;case"EXTINF":this._nextItemDuration=Math.round(1e3*parseFloat(i.split(",")[0]));break;case"EXT-X-ENDLIST":this.emit("endlist")}}else!/^#/.test(e)&&e.trim()&&(this.emit("item",{url:e.trim(),seq:this._seq++,duration:this._nextItemDuration,range:this._nextItemRange}),this._nextItemRange=null)}_write(e,t,i){let a=e.toString("utf8").split("\n");this._lastLine&&(a[0]=this._lastLine+a[0]),a.forEach((e,t)=>{this.destroyed||(t<a.length-1?this._parseLine(e):this._lastLine=e)}),i()}}t.default=r},function(e,t,i){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(0),s=a(i(6)),o=i(3);class n extends r.Writable{constructor(e){let t;super(),this._parser=s.default.createStream(!1,{lowercase:!0}),this._parser.on("error",this.destroy.bind(this));let i,a,r,n,l,c,u,d,p=0,m=0,h=[],f=!1,b=!1;const g=t=>{const i={RepresentationID:e,Number:m,Time:p};return t.replace(/\$(\w+)\$/g,(e,t)=>i[t]+"")};this._parser.on("opentag",s=>{switch(s.name){case"mpd":p=s.attributes.availabilitystarttime?new Date(s.attributes.availabilitystarttime).getTime():0,c="dynamic"!==s.attributes.type;break;case"period":m=0,a=1e3,n=0,r=0,l=[],u=0,d=o.durationStr(s.attributes.start)||0;break;case"segmentlist":m=parseInt(s.attributes.startnumber)||m,a=parseInt(s.attributes.timescale)||a,n=parseInt(s.attributes.duration)||n,r=parseInt(s.attributes.presentationtimeoffset)||r;break;case"segmenttemplate":i=s.attributes,m=parseInt(s.attributes.startnumber)||m,a=parseInt(s.attributes.timescale)||a;break;case"segmenttimeline":case"baseurl":t=s.name;break;case"s":h.push({duration:parseInt(s.attributes.d),repeat:parseInt(s.attributes.r),time:parseInt(s.attributes.t)});break;case"adaptationset":case"representation":u++,null==e&&(e=s.attributes.id),f=s.attributes.id===e+"",f&&(d&&(p+=d),r&&(p-=r/a*1e3),this.emit("starttime",p));break;case"initialization":f&&this.emit("item",{url:l.filter(e=>!!e).join("")+s.attributes.sourceurl,seq:m,init:!0,duration:0});break;case"segmenturl":if(f){b=!0;let e=h.shift(),t=(e&&e.duration||n)/a*1e3;this.emit("item",{url:l.filter(e=>!!e).join("")+s.attributes.media,seq:m++,duration:t}),p+=t}}});const T=()=>{c&&this.emit("endlist"),f?this.emit("end"):this.destroy(Error(`Representation '${e}' not found`))};this._parser.on("closetag",e=>{switch(e){case"adaptationset":case"representation":if(u--,i&&h.length){b=!0,i.initialization&&this.emit("item",{url:l.filter(e=>!!e).join("")+g(i.initialization),seq:m,init:!0,duration:0});for(let{duration:e,repeat:t,time:r}of h){e=e/a*1e3,t=t||1,p=r||p;for(let a=0;a<t;a++)this.emit("item",{url:l.filter(e=>!!e).join("")+g(i.media),seq:m++,duration:e}),p+=e}}b&&(this.emit("endearly"),T(),this._parser.removeAllListeners(),this.removeAllListeners("finish"))}}),this._parser.on("text",e=>{"baseurl"===t&&(l[u]=e,t=null)}),this.on("finish",T)}_write(e,t,i){this._parser.write(e,t),i()}}t.default=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=class{constructor(e,t={}){this._worker=e,this._concurrency=t.concurrency||1,this.tasks=[],this.total=0,this.active=0}push(e,t){this.tasks.push({item:e,callback:t}),this.total++,this._next()}_next(){if(this.active>=this._concurrency||!this.tasks.length)return;const{item:e,callback:t}=this.tasks.shift();let i=!1;this.active++,this._worker(e,(e,a)=>{i||(this.active--,i=!0,t&&t(e,a),this._next())})}die(){this.tasks=[]}}}])}));