diff --git a/README.md b/README.md index 3af53bb..e73f87c 100644 --- a/README.md +++ b/README.md @@ -93,9 +93,12 @@ export default class App extends Component {//默认图片样式宽度100%高度 change(val){//点发生改变的回调函数 只要点击点在松开就会触发不会判断只有位置移动了才触发可以自行判断 console.log(val) //注:当添加了disabled=”true“没有此回调函数 } + wenziChange(val){//这个是文字发生变化的然后返回一个新的值 + console.log(val) //注:当添加了disabled=”true“没有此回调函数 + } render() { return (
- this.change(val)}> + this.change(val)} wenziChange={(val)=>this.wenziChange(val)}>
) } } @@ -121,6 +124,12 @@ export default class App extends Component {//默认图片样式宽度100%高度 titleFont="14px bold 黑体" //文字的字体 titleLineHeight="" //文字的行高 默认和文字行字体大小一样 position={[10,10]} //文字的位置0是x y是一 如果不设置:里面是判断x最大的y最小的值来进行判断 + titleBackgroundColor= ""//字的背景颜色支持rgba + titlePadding= "10px" //文字的padding + titleTextAlign= "center" //文字居中或者左对齐,只支持在disabled为false的时候 + titleWidth= 100 //字底下背景的宽度 + titleFillColor= ""//字底下背景的颜色 + inputStyle={width:"20px"}//这里是添加input的自定义样式(根据js填写就行) > ``` @@ -140,9 +149,12 @@ export default class App extends Component { //mode不些默认是多边形 console.log(val) //注:当添加了disabled=”true“没有此回调函数 } + wenziChange(val){//文字发生变化的时候进行改变 + console.log(val) //注:当添加了disabled=”true“没有此回调函数 + } render() { return (
- this.change(val)}> + this.wenziChange(val)} mode="react" change={(val) => this.change(val)}>
) } } @@ -168,6 +180,11 @@ export default class App extends Component { titleFont="14px bold 黑体" //文字的字体 titleLineHeight="" //文字的行高 默认和文字行字体大小一样 position={[10,10]} //文字的位置0是x y是一 如果不设置:里面是判断x最大的y最小的值来进行判断 + titleBackgroundColor= ""//字的背景颜色支持rgba + titlePadding= "10px" //文字的padding + titleTextAlign= "center" //文字居中或者左对齐,只支持在disabled为false的时候 + titleWidth= 100 //字底下背景的宽度 + titleFillColor= ""//字底下背景的颜色 > ``` @@ -204,6 +221,15 @@ export default class App extends Component { list:val }) } + wenziChange(val,index){//修改文字后放入里面 第一个值是修改后的值,后面的index是修改list中的索引 + var {list} = this.state + list[index].title = val + this.setState({ + list:list + },()=>{ + console.log(this.state.list) + }) + } delete(selectIndex){//删除的id会返回给父组件 let {list} = this.state list = list.filter(item=>item.id!==selectIndex) @@ -214,7 +240,9 @@ export default class App extends Component { } render() { return (
- { this.changeSelect(val)}} delete={(selectIndex)=>{this.delete(selectIndex)}} err={(falg,msg)=>{this.err(falg,msg)}}> + { this.wenziChange(val,index)}} + change={(val) => { this.changeSelect(val)}} delete={(selectIndex)=>{this.delete(selectIndex)}} err={(falg,msg)=>{this.err(falg,msg)}}>
) } } @@ -239,6 +267,11 @@ export default class App extends Component { titleFont="14px bold 黑体" //文字的字体 titleLineHeight="" //文字的行高 默认和文字行字体大小一样 position={[10,10]} //文字的位置0是x y是一 如果不设置:里面是判断x最大的y最小的值来进行判断 + titleBackgroundColor= ""//字的背景颜色支持rgba + titlePadding= "10px" //文字的padding + titleTextAlign= "center" //文字居中或者左对齐,只支持在disabled为false的时候 + titleWidth= 100 //字底下背景的宽度 + titleFillColor= ""//字底下背景的颜色 > ``` diff --git a/dist/index.js b/dist/index.js index 3dac4f8..4c52414 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,17 +1,17 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var i=t();for(var n in i)("object"==typeof exports?exports:e)[n]=i[n]}}(window,(function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},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 n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},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=18)}([function(e,t,i){"use strict";e.exports=i(9)},function(e,t,i){"use strict";var n,r="object"==typeof Reflect?Reflect:null,s=r&&"function"==typeof r.apply?r.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)};n=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise((function(i,n){function r(){void 0!==s&&e.removeListener("error",s),i([].slice.call(arguments))}var s;"error"!==t&&(s=function(i){e.removeListener(t,r),n(i)},e.once("error",s)),e.once(t,r)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var l=10;function h(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function d(e,t,i,n){var r,s,a,o;if(h(i),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),s=e._events),a=s[t]),void 0===a)a=s[t]=i,++e._eventsCount;else if("function"==typeof a?a=s[t]=n?[i,a]:[a,i]:n?a.unshift(i):a.push(i),(r=u(e))>0&&a.length>r&&!a.warned){a.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=a.length,o=l,console&&console.warn&&console.warn(o)}return e}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},r=c.bind(n);return r.listener=i,n.wrapFn=r,r}function _(e,t,i){var n=e._events;if(void 0===n)return[];var r=n[t];return void 0===r?[]:"function"==typeof r?i?[r.listener||r]:[r]:i?function(e){for(var t=new Array(e.length),i=0;i0&&(a=t[0]),a instanceof Error)throw a;var o=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw o.context=a,o}var l=r[e];if(void 0===l)return!1;if("function"==typeof l)s(l,this,t);else{var h=l.length,u=p(l,h);for(i=0;i=0;s--)if(i[s]===t||i[s].listener===t){a=i[s].listener,r=s;break}if(r<0)return this;0===r?i.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},o.prototype.listeners=function(e){return _(this,e,!0)},o.prototype.rawListeners=function(e){return _(this,e,!1)},o.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):m.call(e,t)},o.prototype.listenerCount=m,o.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(e,t,i){"use strict";var n,r=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function o(e){for(var t=-1,i=0;i0&&s.length>n&&!s.warned){s.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=A,o.type=e,o.count=s.length,a=o,console&&console.warn&&console.warn(a)}return A}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(A,e,t){var i={fired:!1,wrapFn:void 0,target:A,type:e,listener:t},n=h.bind(i);return n.listener=t,i.wrapFn=n,n}function f(A,e,t){var i=A._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?t?[n.listener||n]:[n]:t?function(A){for(var e=new Array(A.length),t=0;t0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var o=n[A];if(void 0===o)return!1;if("function"==typeof o)r(o,this,e);else{var l=o.length,u=g(o,l);for(t=0;t=0;r--)if(t[r]===e||t[r].listener===e){s=t[r].listener,n=r;break}if(n<0)return this;0===n?t.shift():function(A,e){for(;e+1=0;i--)this.removeListener(A,e[i]);return this},a.prototype.listeners=function(A){return f(this,A,!0)},a.prototype.rawListeners=function(A){return f(this,A,!1)},a.listenerCount=function(A,e){return"function"==typeof A.listenerCount?A.listenerCount(e):m.call(A,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(A,e,t){"use strict";var i,n=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var A={};return function(e){if(void 0===A[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(A){t=null}A[e]=t}return A[e]}}(),s=[];function a(A){for(var e=-1,t=0;t>>0;for(t=0;t0)for(i=0;i=0?i?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+n}var I=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,B=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,P={},U={};function N(e,t,i,n){var r=n;"string"==typeof n&&(r=function(){return this[n]()}),e&&(U[e]=r),t&&(U[t[0]]=function(){return x(r.apply(this,arguments),t[1],t[2])}),i&&(U[i]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)})}function F(e,t){return e.isValid()?(t=V(t,e.localeData()),P[t]=P[t]||function(e){var t,i,n,r=e.match(I);for(t=0,i=r.length;t=0&&B.test(e);)e=e.replace(B,n),B.lastIndex=0,i-=1;return e}var Y={};function q(e,t){var i=e.toLowerCase();Y[i]=Y[i+"s"]=Y[t]=e}function j(e){return"string"==typeof e?Y[e]||Y[e.toLowerCase()]:void 0}function W(e){var t,i,n={};for(i in e)h(e,i)&&(t=j(i))&&(n[t]=e[i]);return n}var G={};function z(e,t){G[e]=t}function H(e){return e%4==0&&e%100!=0||e%400==0}function K(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Q(e){var t=+e,i=0;return 0!==t&&isFinite(t)&&(i=K(t)),i}function X(e,t){return function(i){return null!=i?(J(this,e,i),a.updateOffset(this,t),this):Z(this,e)}}function Z(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function J(e,t,i){e.isValid()&&!isNaN(i)&&("FullYear"===t&&H(e.year())&&1===e.month()&&29===e.date()?(i=Q(i),e._d["set"+(e._isUTC?"UTC":"")+t](i,e.month(),we(i,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](i))}var $,ee=/\d/,te=/\d\d/,ie=/\d{3}/,ne=/\d{4}/,re=/[+-]?\d{6}/,se=/\d\d?/,ae=/\d\d\d\d?/,oe=/\d\d\d\d\d\d?/,le=/\d{1,3}/,he=/\d{1,4}/,ue=/[+-]?\d{1,6}/,de=/\d+/,ce=/[+-]?\d+/,fe=/Z|[+-]\d\d:?\d\d/gi,_e=/Z|[+-]\d\d(?::?\d\d)?/gi,me=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function pe(e,t,i){$[e]=C(t)?t:function(e,n){return e&&i?i:t}}function ge(e,t){return h($,e)?$[e](t._strict,t._locale):new RegExp(ye(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,i,n,r){return t||i||n||r}))))}function ye(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}$={};var ve={};function Ae(e,t){var i,n=t;for("string"==typeof e&&(e=[e]),c(t)&&(n=function(e,i){i[t]=Q(e)}),i=0;i68?1900:2e3)};var Be=X("FullYear",!0);function Pe(e,t,i,n,r,s,a){var o;return e<100&&e>=0?(o=new Date(e+400,t,i,n,r,s,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,i,n,r,s,a),o}function Ue(e){var t,i;return e<100&&e>=0?((i=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,i)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ne(e,t,i){var n=7+t-i;return-((7+Ue(e,0,n).getUTCDay()-t)%7)+n-1}function Fe(e,t,i,n,r){var s,a,o=1+7*(t-1)+(7+i-n)%7+Ne(e,n,r);return o<=0?a=Ie(s=e-1)+o:o>Ie(e)?(s=e+1,a=o-Ie(e)):(s=e,a=o),{year:s,dayOfYear:a}}function Ve(e,t,i){var n,r,s=Ne(e.year(),t,i),a=Math.floor((e.dayOfYear()-s-1)/7)+1;return a<1?n=a+Ye(r=e.year()-1,t,i):a>Ye(e.year(),t,i)?(n=a-Ye(e.year(),t,i),r=e.year()+1):(r=e.year(),n=a),{week:n,year:r}}function Ye(e,t,i){var n=Ne(e,t,i),r=Ne(e+1,t,i);return(Ie(e)-n+r)/7}N("w",["ww",2],"wo","week"),N("W",["WW",2],"Wo","isoWeek"),q("week","w"),q("isoWeek","W"),z("week",5),z("isoWeek",5),pe("w",se),pe("ww",se,te),pe("W",se),pe("WW",se,te),Se(["w","ww","W","WW"],(function(e,t,i,n){t[n.substr(0,1)]=Q(e)}));function qe(e,t){return e.slice(t,7).concat(e.slice(0,t))}N("d",0,"do","day"),N("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),N("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),N("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),N("e",0,0,"weekday"),N("E",0,0,"isoWeekday"),q("day","d"),q("weekday","e"),q("isoWeekday","E"),z("day",11),z("weekday",11),z("isoWeekday",11),pe("d",se),pe("e",se),pe("E",se),pe("dd",(function(e,t){return t.weekdaysMinRegex(e)})),pe("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),pe("dddd",(function(e,t){return t.weekdaysRegex(e)})),Se(["dd","ddd","dddd"],(function(e,t,i,n){var r=i._locale.weekdaysParse(e,n,i._strict);null!=r?t.d=r:g(i).invalidWeekday=e})),Se(["d","e","E"],(function(e,t,i,n){t[n]=Q(e)}));var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),We="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ge="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ze=me,He=me,Ke=me;function Qe(e,t,i){var n,r,s,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)s=p([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===t?-1!==(r=Ee.call(this._weekdaysParse,a))?r:null:"ddd"===t?-1!==(r=Ee.call(this._shortWeekdaysParse,a))?r:null:-1!==(r=Ee.call(this._minWeekdaysParse,a))?r:null:"dddd"===t?-1!==(r=Ee.call(this._weekdaysParse,a))||-1!==(r=Ee.call(this._shortWeekdaysParse,a))||-1!==(r=Ee.call(this._minWeekdaysParse,a))?r:null:"ddd"===t?-1!==(r=Ee.call(this._shortWeekdaysParse,a))||-1!==(r=Ee.call(this._weekdaysParse,a))||-1!==(r=Ee.call(this._minWeekdaysParse,a))?r:null:-1!==(r=Ee.call(this._minWeekdaysParse,a))||-1!==(r=Ee.call(this._weekdaysParse,a))||-1!==(r=Ee.call(this._shortWeekdaysParse,a))?r:null}function Xe(){function e(e,t){return t.length-e.length}var t,i,n,r,s,a=[],o=[],l=[],h=[];for(t=0;t<7;t++)i=p([2e3,1]).day(t),n=ye(this.weekdaysMin(i,"")),r=ye(this.weekdaysShort(i,"")),s=ye(this.weekdays(i,"")),a.push(n),o.push(r),l.push(s),h.push(n),h.push(r),h.push(s);a.sort(e),o.sort(e),l.sort(e),h.sort(e),this._weekdaysRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Ze(){return this.hours()%12||12}function Je(e,t){N(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function $e(e,t){return t._meridiemParse}N("H",["HH",2],0,"hour"),N("h",["hh",2],0,Ze),N("k",["kk",2],0,(function(){return this.hours()||24})),N("hmm",0,0,(function(){return""+Ze.apply(this)+x(this.minutes(),2)})),N("hmmss",0,0,(function(){return""+Ze.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)})),N("Hmm",0,0,(function(){return""+this.hours()+x(this.minutes(),2)})),N("Hmmss",0,0,(function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)})),Je("a",!0),Je("A",!1),q("hour","h"),z("hour",13),pe("a",$e),pe("A",$e),pe("H",se),pe("h",se),pe("k",se),pe("HH",se,te),pe("hh",se,te),pe("kk",se,te),pe("hmm",ae),pe("hmmss",oe),pe("Hmm",ae),pe("Hmmss",oe),Ae(["H","HH"],3),Ae(["k","kk"],(function(e,t,i){var n=Q(e);t[3]=24===n?0:n})),Ae(["a","A"],(function(e,t,i){i._isPm=i._locale.isPM(e),i._meridiem=e})),Ae(["h","hh"],(function(e,t,i){t[3]=Q(e),g(i).bigHour=!0})),Ae("hmm",(function(e,t,i){var n=e.length-2;t[3]=Q(e.substr(0,n)),t[4]=Q(e.substr(n)),g(i).bigHour=!0})),Ae("hmmss",(function(e,t,i){var n=e.length-4,r=e.length-2;t[3]=Q(e.substr(0,n)),t[4]=Q(e.substr(n,2)),t[5]=Q(e.substr(r)),g(i).bigHour=!0})),Ae("Hmm",(function(e,t,i){var n=e.length-2;t[3]=Q(e.substr(0,n)),t[4]=Q(e.substr(n))})),Ae("Hmmss",(function(e,t,i){var n=e.length-4,r=e.length-2;t[3]=Q(e.substr(0,n)),t[4]=Q(e.substr(n,2)),t[5]=Q(e.substr(r))}));var et=X("Hours",!0);var tt,it={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Re,monthsShort:De,week:{dow:0,doy:6},weekdays:je,weekdaysMin:Ge,weekdaysShort:We,meridiemParse:/[ap]\.?m?\.?/i},nt={},rt={};function st(e,t){var i,n=Math.min(e.length,t.length);for(i=0;i0;){if(n=ot(r.slice(0,t).join("-")))return n;if(i&&i.length>=t&&st(r,i)>=t-1)break;t--}s++}return tt}(e)}function dt(e){var t,i=e._a;return i&&-2===g(e).overflow&&(t=i[1]<0||i[1]>11?1:i[2]<1||i[2]>we(i[0],i[1])?2:i[3]<0||i[3]>24||24===i[3]&&(0!==i[4]||0!==i[5]||0!==i[6])?3:i[4]<0||i[4]>59?4:i[5]<0||i[5]>59?5:i[6]<0||i[6]>999?6:-1,g(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),g(e)._overflowWeeks&&-1===t&&(t=7),g(e)._overflowWeekday&&-1===t&&(t=8),g(e).overflow=t),e}var ct=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ft=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,mt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],pt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],gt=/^\/?Date\((-?\d+)/i,yt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,vt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function At(e){var t,i,n,r,s,a,o=e._i,l=ct.exec(o)||ft.exec(o);if(l){for(g(e).iso=!0,t=0,i=mt.length;t7)&&(l=!0)):(s=e._locale._week.dow,a=e._locale._week.doy,h=Ve(Lt(),s,a),i=Et(t.gg,e._a[0],h.year),n=Et(t.w,h.week),null!=t.d?((r=t.d)<0||r>6)&&(l=!0):null!=t.e?(r=t.e+s,(t.e<0||t.e>6)&&(l=!0)):r=s);n<1||n>Ye(i,s,a)?g(e)._overflowWeeks=!0:null!=l?g(e)._overflowWeekday=!0:(o=Fe(i,n,r,s,a),e._a[0]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(s=Et(e._a[0],n[0]),(e._dayOfYear>Ie(s)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),i=Ue(s,0,e._dayOfYear),e._a[1]=i.getUTCMonth(),e._a[2]=i.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=n[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?Ue:Pe).apply(null,o),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(g(e).weekdayMismatch=!0)}}function Rt(e){if(e._f!==a.ISO_8601)if(e._f!==a.RFC_2822){e._a=[],g(e).empty=!0;var t,i,n,r,s,o,l=""+e._i,h=l.length,u=0;for(n=V(e._f,e._locale).match(I)||[],t=0;t0&&g(e).unusedInput.push(s),l=l.slice(l.indexOf(i)+i.length),u+=i.length),U[r]?(i?g(e).empty=!1:g(e).unusedTokens.push(r),be(r,i,e)):e._strict&&!i&&g(e).unusedTokens.push(r);g(e).charsLeftOver=h-u,l.length>0&&g(e).unusedInput.push(l),e._a[3]<=12&&!0===g(e).bigHour&&e._a[3]>0&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[3]=function(e,t,i){var n;if(null==i)return t;return null!=e.meridiemHour?e.meridiemHour(t,i):null!=e.isPM?((n=e.isPM(i))&&t<12&&(t+=12),n||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),null!==(o=g(e).era)&&(e._a[0]=e._locale.erasConvertYear(o,e._a[0])),wt(e),dt(e)}else bt(e);else At(e)}function Dt(e){var t=e._i,i=e._f;return e._locale=e._locale||ut(e._l),null===t||void 0===i&&""===t?v({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new E(dt(t)):(f(t)?e._d=t:o(i)?function(e){var t,i,n,r,s,a,o=!1;if(0===e._f.length)return g(e).invalidFormat=!0,void(e._d=new Date(NaN));for(r=0;rthis?this:e:v()}));function Mt(e,t){var i,n;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Lt();for(i=t[0],n=1;n=0?new Date(e+400,t,i)-126227808e5:new Date(e,t,i).valueOf()}function ai(e,t,i){return e<100&&e>=0?Date.UTC(e+400,t,i)-126227808e5:Date.UTC(e,t,i)}function oi(e,t){return t.erasAbbrRegex(e)}function li(){var e,t,i=[],n=[],r=[],s=[],a=this.eras();for(e=0,t=a.length;e(s=Ye(e,n,r))&&(t=s),di.call(this,e,t,i,n,r))}function di(e,t,i,n,r){var s=Fe(e,t,i,n,r),a=Ue(s.year,0,s.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}N("N",0,0,"eraAbbr"),N("NN",0,0,"eraAbbr"),N("NNN",0,0,"eraAbbr"),N("NNNN",0,0,"eraName"),N("NNNNN",0,0,"eraNarrow"),N("y",["y",1],"yo","eraYear"),N("y",["yy",2],0,"eraYear"),N("y",["yyy",3],0,"eraYear"),N("y",["yyyy",4],0,"eraYear"),pe("N",oi),pe("NN",oi),pe("NNN",oi),pe("NNNN",(function(e,t){return t.erasNameRegex(e)})),pe("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),Ae(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,i,n){var r=i._locale.erasParse(e,n,i._strict);r?g(i).era=r:g(i).invalidEra=e})),pe("y",de),pe("yy",de),pe("yyy",de),pe("yyyy",de),pe("yo",(function(e,t){return t._eraYearOrdinalRegex||de})),Ae(["y","yy","yyy","yyyy"],0),Ae(["yo"],(function(e,t,i,n){var r;i._locale._eraYearOrdinalRegex&&(r=e.match(i._locale._eraYearOrdinalRegex)),i._locale.eraYearOrdinalParse?t[0]=i._locale.eraYearOrdinalParse(e,r):t[0]=parseInt(e,10)})),N(0,["gg",2],0,(function(){return this.weekYear()%100})),N(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),hi("gggg","weekYear"),hi("ggggg","weekYear"),hi("GGGG","isoWeekYear"),hi("GGGGG","isoWeekYear"),q("weekYear","gg"),q("isoWeekYear","GG"),z("weekYear",1),z("isoWeekYear",1),pe("G",ce),pe("g",ce),pe("GG",se,te),pe("gg",se,te),pe("GGGG",he,ne),pe("gggg",he,ne),pe("GGGGG",ue,re),pe("ggggg",ue,re),Se(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,i,n){t[n.substr(0,2)]=Q(e)})),Se(["gg","GG"],(function(e,t,i,n){t[n]=a.parseTwoDigitYear(e)})),N("Q",0,"Qo","quarter"),q("quarter","Q"),z("quarter",7),pe("Q",ee),Ae("Q",(function(e,t){t[1]=3*(Q(e)-1)})),N("D",["DD",2],"Do","date"),q("date","D"),z("date",9),pe("D",se),pe("DD",se,te),pe("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),Ae(["D","DD"],2),Ae("Do",(function(e,t){t[2]=Q(e.match(se)[0])}));var ci=X("Date",!0);N("DDD",["DDDD",3],"DDDo","dayOfYear"),q("dayOfYear","DDD"),z("dayOfYear",4),pe("DDD",le),pe("DDDD",ie),Ae(["DDD","DDDD"],(function(e,t,i){i._dayOfYear=Q(e)})),N("m",["mm",2],0,"minute"),q("minute","m"),z("minute",14),pe("m",se),pe("mm",se,te),Ae(["m","mm"],4);var fi=X("Minutes",!1);N("s",["ss",2],0,"second"),q("second","s"),z("second",15),pe("s",se),pe("ss",se,te),Ae(["s","ss"],5);var _i,mi,pi=X("Seconds",!1);for(N("S",0,0,(function(){return~~(this.millisecond()/100)})),N(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),N(0,["SSS",3],0,"millisecond"),N(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),N(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),N(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),N(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),N(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),N(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),q("millisecond","ms"),z("millisecond",16),pe("S",le,ee),pe("SS",le,te),pe("SSS",le,ie),_i="SSSS";_i.length<=9;_i+="S")pe(_i,de);function gi(e,t){t[6]=Q(1e3*("0."+e))}for(_i="S";_i.length<=9;_i+="S")Ae(_i,gi);mi=X("Milliseconds",!1),N("z",0,0,"zoneAbbr"),N("zz",0,0,"zoneName");var yi=E.prototype;function vi(e){return e}yi.add=Qt,yi.calendar=function(e,t){1===arguments.length&&(arguments[0]?Jt(arguments[0])?(e=arguments[0],t=void 0):$t(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var i=e||Lt(),n=Ft(i,this).startOf("day"),r=a.calendarFormat(this,n)||"sameElse",s=t&&(C(t[r])?t[r].call(this,i):t[r]);return this.format(s||this.localeData().calendar(r,this,Lt(i)))},yi.clone=function(){return new E(this)},yi.diff=function(e,t,i){var n,r,s;if(!this.isValid())return NaN;if(!(n=Ft(e,this)).isValid())return NaN;switch(r=6e4*(n.utcOffset()-this.utcOffset()),t=j(t)){case"year":s=ei(this,n)/12;break;case"month":s=ei(this,n);break;case"quarter":s=ei(this,n)/3;break;case"second":s=(this-n)/1e3;break;case"minute":s=(this-n)/6e4;break;case"hour":s=(this-n)/36e5;break;case"day":s=(this-n-r)/864e5;break;case"week":s=(this-n-r)/6048e5;break;default:s=this-n}return i?s:K(s)},yi.endOf=function(e){var t,i;if(void 0===(e=j(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?ai:si,e){case"year":t=i(this.year()+1,0,1)-1;break;case"quarter":t=i(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=i(this.year(),this.month()+1,1)-1;break;case"week":t=i(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=i(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-ri(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-ri(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-ri(t,1e3)-1}return this._d.setTime(t),a.updateOffset(this,!0),this},yi.format=function(e){e||(e=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var t=F(this,e);return this.localeData().postformat(t)},yi.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Lt(e).isValid())?Wt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},yi.fromNow=function(e){return this.from(Lt(),e)},yi.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Lt(e).isValid())?Wt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},yi.toNow=function(e){return this.to(Lt(),e)},yi.get=function(e){return C(this[e=j(e)])?this[e]():this},yi.invalidAt=function(){return g(this).overflow},yi.isAfter=function(e,t){var i=w(e)?e:Lt(e);return!(!this.isValid()||!i.isValid())&&("millisecond"===(t=j(t)||"millisecond")?this.valueOf()>i.valueOf():i.valueOf()9999?F(i,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):C(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",F(i,"Z")):F(i,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yi.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,i,n="moment",r="";return this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),e="["+n+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY","-MM-DD[T]HH:mm:ss.SSS",i=r+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+i)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yi[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yi.toJSON=function(){return this.isValid()?this.toISOString():null},yi.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yi.unix=function(){return Math.floor(this.valueOf()/1e3)},yi.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yi.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yi.eraName=function(){var e,t,i,n=this.localeData().eras();for(e=0,t=n.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yi.isLocal=function(){return!!this.isValid()&&!this._isUTC},yi.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yi.isUtc=Yt,yi.isUTC=Yt,yi.zoneAbbr=function(){return this._isUTC?"UTC":""},yi.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yi.dates=D("dates accessor is deprecated. Use date instead.",ci),yi.months=D("months accessor is deprecated. Use month instead",Oe),yi.years=D("years accessor is deprecated. Use year instead",Be),yi.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),yi.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!d(this._isDSTShifted))return this._isDSTShifted;var e,t={};return b(t,this),(t=Dt(t))._a?(e=t._isUTC?p(t._a):Lt(t._a),this._isDSTShifted=this.isValid()&&function(e,t,i){var n,r=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),a=0;for(n=0;n0):this._isDSTShifted=!1,this._isDSTShifted}));var Ai=O.prototype;function Si(e,t,i,n){var r=ut(),s=p().set(n,t);return r[i](s,e)}function bi(e,t,i){if(c(e)&&(t=e,e=void 0),e=e||"",null!=t)return Si(e,t,i,"month");var n,r=[];for(n=0;n<12;n++)r[n]=Si(e,n,i,"month");return r}function Ei(e,t,i,n){"boolean"==typeof e?(c(t)&&(i=t,t=void 0),t=t||""):(i=t=e,e=!1,c(t)&&(i=t,t=void 0),t=t||"");var r,s=ut(),a=e?s._week.dow:0,o=[];if(null!=i)return Si(t,(i+a)%7,n,"day");for(r=0;r<7;r++)o[r]=Si(t,(r+a)%7,n,"day");return o}Ai.calendar=function(e,t,i){var n=this._calendar[e]||this._calendar.sameElse;return C(n)?n.call(t,i):n},Ai.longDateFormat=function(e){var t=this._longDateFormat[e],i=this._longDateFormat[e.toUpperCase()];return t||!i?t:(this._longDateFormat[e]=i.match(I).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},Ai.invalidDate=function(){return this._invalidDate},Ai.ordinal=function(e){return this._ordinal.replace("%d",e)},Ai.preparse=vi,Ai.postformat=vi,Ai.relativeTime=function(e,t,i,n){var r=this._relativeTime[i];return C(r)?r(e,t,i,n):r.replace(/%d/i,e)},Ai.pastFuture=function(e,t){var i=this._relativeTime[e>0?"future":"past"];return C(i)?i(t):i.replace(/%s/i,t)},Ai.set=function(e){var t,i;for(i in e)h(e,i)&&(C(t=e[i])?this[i]=t:this["_"+i]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Ai.eras=function(e,t){var i,n,r,o=this._eras||ut("en")._eras;for(i=0,n=o.length;i=0)return l[n]},Ai.erasConvertYear=function(e,t){var i=e.since<=e.until?1:-1;return void 0===t?a(e.since).year():a(e.since).year()+(t-e.offset)*i},Ai.erasAbbrRegex=function(e){return h(this,"_erasAbbrRegex")||li.call(this),e?this._erasAbbrRegex:this._erasRegex},Ai.erasNameRegex=function(e){return h(this,"_erasNameRegex")||li.call(this),e?this._erasNameRegex:this._erasRegex},Ai.erasNarrowRegex=function(e){return h(this,"_erasNarrowRegex")||li.call(this),e?this._erasNarrowRegex:this._erasRegex},Ai.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||ke).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},Ai.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[ke.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Ai.monthsParse=function(e,t,i){var n,r,s;if(this._monthsParseExact)return Ce.call(this,e,t,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(r=p([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),i||this._monthsParse[n]||(s="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===t&&this._longMonthsParse[n].test(e))return n;if(i&&"MMM"===t&&this._shortMonthsParse[n].test(e))return n;if(!i&&this._monthsParse[n].test(e))return n}},Ai.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||xe.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Te),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Ai.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||xe.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Ai.week=function(e){return Ve(e,this._week.dow,this._week.doy).week},Ai.firstDayOfYear=function(){return this._week.doy},Ai.firstDayOfWeek=function(){return this._week.dow},Ai.weekdays=function(e,t){var i=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?qe(i,this._week.dow):e?i[e.day()]:i},Ai.weekdaysMin=function(e){return!0===e?qe(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Ai.weekdaysShort=function(e){return!0===e?qe(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Ai.weekdaysParse=function(e,t,i){var n,r,s;if(this._weekdaysParseExact)return Qe.call(this,e,t,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(r=p([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(s="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[n]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===t&&this._fullWeekdaysParse[n].test(e))return n;if(i&&"ddd"===t&&this._shortWeekdaysParse[n].test(e))return n;if(i&&"dd"===t&&this._minWeekdaysParse[n].test(e))return n;if(!i&&this._weekdaysParse[n].test(e))return n}},Ai.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Xe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=ze),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Ai.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Xe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=He),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Ai.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Xe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ke),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Ai.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Ai.meridiem=function(e,t,i){return e>11?i?"pm":"PM":i?"am":"AM"},lt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===Q(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),a.lang=D("moment.lang is deprecated. Use moment.locale instead.",lt),a.langData=D("moment.langData is deprecated. Use moment.localeData instead.",ut);var wi=Math.abs;function Ri(e,t,i,n){var r=Wt(t,i);return e._milliseconds+=n*r._milliseconds,e._days+=n*r._days,e._months+=n*r._months,e._bubble()}function Di(e){return e<0?Math.floor(e):Math.ceil(e)}function ki(e){return 4800*e/146097}function Li(e){return 146097*e/4800}function Ti(e){return function(){return this.as(e)}}var Ci=Ti("ms"),Mi=Ti("s"),Oi=Ti("m"),xi=Ti("h"),Ii=Ti("d"),Bi=Ti("w"),Pi=Ti("M"),Ui=Ti("Q"),Ni=Ti("y");function Fi(e){return function(){return this.isValid()?this._data[e]:NaN}}var Vi=Fi("milliseconds"),Yi=Fi("seconds"),qi=Fi("minutes"),ji=Fi("hours"),Wi=Fi("days"),Gi=Fi("months"),zi=Fi("years");var Hi=Math.round,Ki={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Qi(e,t,i,n,r){return r.relativeTime(t||1,!!i,e,n)}var Xi=Math.abs;function Zi(e){return(e>0)-(e<0)||+e}function Ji(){if(!this.isValid())return this.localeData().invalidDate();var e,t,i,n,r,s,a,o,l=Xi(this._milliseconds)/1e3,h=Xi(this._days),u=Xi(this._months),d=this.asSeconds();return d?(e=K(l/60),t=K(e/60),l%=60,e%=60,i=K(u/12),u%=12,n=l?l.toFixed(3).replace(/\.?0+$/,""):"",r=d<0?"-":"",s=Zi(this._months)!==Zi(d)?"-":"",a=Zi(this._days)!==Zi(d)?"-":"",o=Zi(this._milliseconds)!==Zi(d)?"-":"",r+"P"+(i?s+i+"Y":"")+(u?s+u+"M":"")+(h?a+h+"D":"")+(t||e||l?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(l?o+n+"S":"")):"P0D"}var $i=xt.prototype;$i.isValid=function(){return this._isValid},$i.abs=function(){var e=this._data;return this._milliseconds=wi(this._milliseconds),this._days=wi(this._days),this._months=wi(this._months),e.milliseconds=wi(e.milliseconds),e.seconds=wi(e.seconds),e.minutes=wi(e.minutes),e.hours=wi(e.hours),e.months=wi(e.months),e.years=wi(e.years),this},$i.add=function(e,t){return Ri(this,e,t,1)},$i.subtract=function(e,t){return Ri(this,e,t,-1)},$i.as=function(e){if(!this.isValid())return NaN;var t,i,n=this._milliseconds;if("month"===(e=j(e))||"quarter"===e||"year"===e)switch(t=this._days+n/864e5,i=this._months+ki(t),e){case"month":return i;case"quarter":return i/3;case"year":return i/12}else switch(t=this._days+Math.round(Li(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return 24*t+n/36e5;case"minute":return 1440*t+n/6e4;case"second":return 86400*t+n/1e3;case"millisecond":return Math.floor(864e5*t)+n;default:throw new Error("Unknown unit "+e)}},$i.asMilliseconds=Ci,$i.asSeconds=Mi,$i.asMinutes=Oi,$i.asHours=xi,$i.asDays=Ii,$i.asWeeks=Bi,$i.asMonths=Pi,$i.asQuarters=Ui,$i.asYears=Ni,$i.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*Q(this._months/12):NaN},$i._bubble=function(){var e,t,i,n,r,s=this._milliseconds,a=this._days,o=this._months,l=this._data;return s>=0&&a>=0&&o>=0||s<=0&&a<=0&&o<=0||(s+=864e5*Di(Li(o)+a),a=0,o=0),l.milliseconds=s%1e3,e=K(s/1e3),l.seconds=e%60,t=K(e/60),l.minutes=t%60,i=K(t/60),l.hours=i%24,a+=K(i/24),o+=r=K(ki(a)),a-=Di(Li(r)),n=K(o/12),o%=12,l.days=a,l.months=o,l.years=n,this},$i.clone=function(){return Wt(this)},$i.get=function(e){return e=j(e),this.isValid()?this[e+"s"]():NaN},$i.milliseconds=Vi,$i.seconds=Yi,$i.minutes=qi,$i.hours=ji,$i.days=Wi,$i.weeks=function(){return K(this.days()/7)},$i.months=Gi,$i.years=zi,$i.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var i,n,r=!1,a=Ki;return"object"===s(e)&&(t=e,e=!1),"boolean"==typeof e&&(r=e),"object"===s(t)&&(a=Object.assign({},Ki,t),null!=t.s&&null==t.ss&&(a.ss=t.s-1)),n=function(e,t,i,n){var r=Wt(e).abs(),s=Hi(r.as("s")),a=Hi(r.as("m")),o=Hi(r.as("h")),l=Hi(r.as("d")),h=Hi(r.as("M")),u=Hi(r.as("w")),d=Hi(r.as("y")),c=s<=i.ss&&["s",s]||s0,c[4]=n,Qi.apply(null,c)}(this,!r,a,i=this.localeData()),r&&(n=i.pastFuture(+this,n)),i.postformat(n)},$i.toISOString=Ji,$i.toString=Ji,$i.toJSON=Ji,$i.locale=ti,$i.localeData=ni,$i.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ji),$i.lang=ii,N("X",0,0,"unix"),N("x",0,0,"valueOf"),pe("x",ce),pe("X",/[+-]?\d+(\.\d{1,3})?/),Ae("X",(function(e,t,i){i._d=new Date(1e3*parseFloat(e))})),Ae("x",(function(e,t,i){i._d=new Date(Q(e))})),//! moment.js -a.version="2.29.1",n=Lt,a.fn=yi,a.min=function(){var e=[].slice.call(arguments,0);return Mt("isBefore",e)},a.max=function(){var e=[].slice.call(arguments,0);return Mt("isAfter",e)},a.now=function(){return Date.now?Date.now():+new Date},a.utc=p,a.unix=function(e){return Lt(1e3*e)},a.months=function(e,t){return bi(e,t,"months")},a.isDate=f,a.locale=lt,a.invalid=v,a.duration=Wt,a.isMoment=w,a.weekdays=function(e,t,i){return Ei(e,t,i,"weekdays")},a.parseZone=function(){return Lt.apply(null,arguments).parseZone()},a.localeData=ut,a.isDuration=It,a.monthsShort=function(e,t){return bi(e,t,"monthsShort")},a.weekdaysMin=function(e,t,i){return Ei(e,t,i,"weekdaysMin")},a.defineLocale=ht,a.updateLocale=function(e,t){if(null!=t){var i,n,r=it;null!=nt[e]&&null!=nt[e].parentLocale?nt[e].set(M(nt[e]._config,t)):(null!=(n=ot(e))&&(r=n._config),t=M(r,t),null==n&&(t.abbr=e),(i=new O(t)).parentLocale=nt[e],nt[e]=i),lt(e)}else null!=nt[e]&&(null!=nt[e].parentLocale?(nt[e]=nt[e].parentLocale,e===lt()&<(e)):null!=nt[e]&&delete nt[e]);return nt[e]},a.locales=function(){return k(nt)},a.weekdaysShort=function(e,t,i){return Ei(e,t,i,"weekdaysShort")},a.normalizeUnits=j,a.relativeTimeRounding=function(e){return void 0===e?Hi:"function"==typeof e&&(Hi=e,!0)},a.relativeTimeThreshold=function(e,t){return void 0!==Ki[e]&&(void 0===t?Ki[e]:(Ki[e]=t,"s"===e&&(Ki.ss=t-1),!0))},a.calendarFormat=function(e,t){var i=e.diff(t,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"},a.prototype=yi,a.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t.a=a}).call(this,i(15)(e))},function(e,t,i){"use strict";var n=i(3),r=i.n(n)()((function(e){return e[1]}));r.push([e.i,".flvWai,.flvWai>.videoFlv{\r\n width: 100%; \r\n height: 100%; \r\n}\r\n.flvWai>.videoFlv:hover{\r\n outline: none;\r\n}",""]),t.a=r},function(e,t,i){"use strict";var n=i(3),r=i.n(n)()((function(e){return e[1]}));r.push([e.i,'.timerComCss{\r\n font-family: "fontInit";\r\n color: rgb(47, 233, 242);\r\n font-size: 20px;\r\n letter-spacing: 2px;\r\n}\r\np{\r\n margin: 0;\r\n padding: 0;\r\n}',""]),t.a=r},function(e,t,i){"use strict";var n=i(3),r=i.n(n)()((function(e){return e[1]}));r.push([e.i,"img{\r\n width: 100%;\r\n}",""]),t.a=r},function(e,t,i){"use strict";i.r(t);var n=i(4); +function s(){return i.apply(null,arguments)}function a(A){return A instanceof Array||"[object Array]"===Object.prototype.toString.call(A)}function o(A){return null!=A&&"[object Object]"===Object.prototype.toString.call(A)}function l(A,e){return Object.prototype.hasOwnProperty.call(A,e)}function u(A){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(A).length;var e;for(e in A)if(l(A,e))return!1;return!0}function d(A){return void 0===A}function h(A){return"number"==typeof A||"[object Number]"===Object.prototype.toString.call(A)}function c(A){return A instanceof Date||"[object Date]"===Object.prototype.toString.call(A)}function f(A,e){var t,i=[];for(t=0;t>>0;for(e=0;e0)for(t=0;t=0?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+i}var M=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,I=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,k={},z={};function j(A,e,t,i){var n=i;"string"==typeof i&&(n=function(){return this[i]()}),A&&(z[A]=n),e&&(z[e[0]]=function(){return B(n.apply(this,arguments),e[1],e[2])}),t&&(z[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),A)})}function H(A,e){return A.isValid()?(e=N(e,A.localeData()),k[e]=k[e]||function(A){var e,t,i,n=A.match(M);for(e=0,t=n.length;e=0&&I.test(A);)A=A.replace(I,i),I.lastIndex=0,t-=1;return A}var Q={};function U(A,e){var t=A.toLowerCase();Q[t]=Q[t+"s"]=Q[e]=A}function F(A){return"string"==typeof A?Q[A]||Q[A.toLowerCase()]:void 0}function G(A){var e,t,i={};for(t in A)l(A,t)&&(e=F(t))&&(i[e]=A[t]);return i}var X={};function V(A,e){X[A]=e}function Y(A){return A%4==0&&A%100!=0||A%400==0}function q(A){return A<0?Math.ceil(A)||0:Math.floor(A)}function W(A){var e=+A,t=0;return 0!==e&&isFinite(e)&&(t=q(e)),t}function Z(A,e){return function(t){return null!=t?(K(this,A,t),s.updateOffset(this,e),this):J(this,A)}}function J(A,e){return A.isValid()?A._d["get"+(A._isUTC?"UTC":"")+e]():NaN}function K(A,e,t){A.isValid()&&!isNaN(t)&&("FullYear"===e&&Y(A.year())&&1===A.month()&&29===A.date()?(t=W(t),A._d["set"+(A._isUTC?"UTC":"")+e](t,A.month(),RA(t,A.month()))):A._d["set"+(A._isUTC?"UTC":"")+e](t))}var $,AA=/\d/,eA=/\d\d/,tA=/\d{3}/,iA=/\d{4}/,nA=/[+-]?\d{6}/,rA=/\d\d?/,sA=/\d\d\d\d?/,aA=/\d\d\d\d\d\d?/,oA=/\d{1,3}/,lA=/\d{1,4}/,uA=/[+-]?\d{1,6}/,dA=/\d+/,hA=/[+-]?\d+/,cA=/Z|[+-]\d\d:?\d\d/gi,fA=/Z|[+-]\d\d(?::?\d\d)?/gi,mA=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function gA(A,e,t){$[A]=x(e)?e:function(A,i){return A&&t?t:e}}function pA(A,e){return l($,A)?$[A](e._strict,e._locale):new RegExp(vA(A.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(A,e,t,i,n){return e||t||i||n}))))}function vA(A){return A.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}$={};var _A={};function yA(A,e){var t,i=e;for("string"==typeof A&&(A=[A]),h(e)&&(i=function(A,t){t[e]=W(A)}),t=0;t68?1900:2e3)};var IA=Z("FullYear",!0);function kA(A,e,t,i,n,r,s){var a;return A<100&&A>=0?(a=new Date(A+400,e,t,i,n,r,s),isFinite(a.getFullYear())&&a.setFullYear(A)):a=new Date(A,e,t,i,n,r,s),a}function zA(A){var e,t;return A<100&&A>=0?((t=Array.prototype.slice.call(arguments))[0]=A+400,e=new Date(Date.UTC.apply(null,t)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(A)):e=new Date(Date.UTC.apply(null,arguments)),e}function jA(A,e,t){var i=7+e-t;return-((7+zA(A,0,i).getUTCDay()-e)%7)+i-1}function HA(A,e,t,i,n){var r,s,a=1+7*(e-1)+(7+t-i)%7+jA(A,i,n);return a<=0?s=MA(r=A-1)+a:a>MA(A)?(r=A+1,s=a-MA(A)):(r=A,s=a),{year:r,dayOfYear:s}}function NA(A,e,t){var i,n,r=jA(A.year(),e,t),s=Math.floor((A.dayOfYear()-r-1)/7)+1;return s<1?i=s+QA(n=A.year()-1,e,t):s>QA(A.year(),e,t)?(i=s-QA(A.year(),e,t),n=A.year()+1):(n=A.year(),i=s),{week:i,year:n}}function QA(A,e,t){var i=jA(A,e,t),n=jA(A+1,e,t);return(MA(A)-i+n)/7}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),U("week","w"),U("isoWeek","W"),V("week",5),V("isoWeek",5),gA("w",rA),gA("ww",rA,eA),gA("W",rA),gA("WW",rA,eA),bA(["w","ww","W","WW"],(function(A,e,t,i){e[i.substr(0,1)]=W(A)}));function UA(A,e){return A.slice(e,7).concat(A.slice(0,e))}j("d",0,"do","day"),j("dd",0,0,(function(A){return this.localeData().weekdaysMin(this,A)})),j("ddd",0,0,(function(A){return this.localeData().weekdaysShort(this,A)})),j("dddd",0,0,(function(A){return this.localeData().weekdays(this,A)})),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),U("day","d"),U("weekday","e"),U("isoWeekday","E"),V("day",11),V("weekday",11),V("isoWeekday",11),gA("d",rA),gA("e",rA),gA("E",rA),gA("dd",(function(A,e){return e.weekdaysMinRegex(A)})),gA("ddd",(function(A,e){return e.weekdaysShortRegex(A)})),gA("dddd",(function(A,e){return e.weekdaysRegex(A)})),bA(["dd","ddd","dddd"],(function(A,e,t,i){var n=t._locale.weekdaysParse(A,i,t._strict);null!=n?e.d=n:p(t).invalidWeekday=A})),bA(["d","e","E"],(function(A,e,t,i){e[i]=W(A)}));var FA="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),GA="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),XA="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),VA=mA,YA=mA,qA=mA;function WA(A,e,t){var i,n,r,s=A.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=g([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return t?"dddd"===e?-1!==(n=wA.call(this._weekdaysParse,s))?n:null:"ddd"===e?-1!==(n=wA.call(this._shortWeekdaysParse,s))?n:null:-1!==(n=wA.call(this._minWeekdaysParse,s))?n:null:"dddd"===e?-1!==(n=wA.call(this._weekdaysParse,s))||-1!==(n=wA.call(this._shortWeekdaysParse,s))||-1!==(n=wA.call(this._minWeekdaysParse,s))?n:null:"ddd"===e?-1!==(n=wA.call(this._shortWeekdaysParse,s))||-1!==(n=wA.call(this._weekdaysParse,s))||-1!==(n=wA.call(this._minWeekdaysParse,s))?n:null:-1!==(n=wA.call(this._minWeekdaysParse,s))||-1!==(n=wA.call(this._weekdaysParse,s))||-1!==(n=wA.call(this._shortWeekdaysParse,s))?n:null}function ZA(){function A(A,e){return e.length-A.length}var e,t,i,n,r,s=[],a=[],o=[],l=[];for(e=0;e<7;e++)t=g([2e3,1]).day(e),i=vA(this.weekdaysMin(t,"")),n=vA(this.weekdaysShort(t,"")),r=vA(this.weekdays(t,"")),s.push(i),a.push(n),o.push(r),l.push(i),l.push(n),l.push(r);s.sort(A),a.sort(A),o.sort(A),l.sort(A),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function JA(){return this.hours()%12||12}function KA(A,e){j(A,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function $A(A,e){return e._meridiemParse}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,JA),j("k",["kk",2],0,(function(){return this.hours()||24})),j("hmm",0,0,(function(){return""+JA.apply(this)+B(this.minutes(),2)})),j("hmmss",0,0,(function(){return""+JA.apply(this)+B(this.minutes(),2)+B(this.seconds(),2)})),j("Hmm",0,0,(function(){return""+this.hours()+B(this.minutes(),2)})),j("Hmmss",0,0,(function(){return""+this.hours()+B(this.minutes(),2)+B(this.seconds(),2)})),KA("a",!0),KA("A",!1),U("hour","h"),V("hour",13),gA("a",$A),gA("A",$A),gA("H",rA),gA("h",rA),gA("k",rA),gA("HH",rA,eA),gA("hh",rA,eA),gA("kk",rA,eA),gA("hmm",sA),gA("hmmss",aA),gA("Hmm",sA),gA("Hmmss",aA),yA(["H","HH"],3),yA(["k","kk"],(function(A,e,t){var i=W(A);e[3]=24===i?0:i})),yA(["a","A"],(function(A,e,t){t._isPm=t._locale.isPM(A),t._meridiem=A})),yA(["h","hh"],(function(A,e,t){e[3]=W(A),p(t).bigHour=!0})),yA("hmm",(function(A,e,t){var i=A.length-2;e[3]=W(A.substr(0,i)),e[4]=W(A.substr(i)),p(t).bigHour=!0})),yA("hmmss",(function(A,e,t){var i=A.length-4,n=A.length-2;e[3]=W(A.substr(0,i)),e[4]=W(A.substr(i,2)),e[5]=W(A.substr(n)),p(t).bigHour=!0})),yA("Hmm",(function(A,e,t){var i=A.length-2;e[3]=W(A.substr(0,i)),e[4]=W(A.substr(i))})),yA("Hmmss",(function(A,e,t){var i=A.length-4,n=A.length-2;e[3]=W(A.substr(0,i)),e[4]=W(A.substr(i,2)),e[5]=W(A.substr(n))}));var Ae=Z("Hours",!0);var ee,te={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:SA,monthsShort:DA,week:{dow:0,doy:6},weekdays:FA,weekdaysMin:XA,weekdaysShort:GA,meridiemParse:/[ap]\.?m?\.?/i},ie={},ne={};function re(A,e){var t,i=Math.min(A.length,e.length);for(t=0;t0;){if(i=ae(n.slice(0,e).join("-")))return i;if(t&&t.length>=e&&re(n,t)>=e-1)break;e--}r++}return ee}(A)}function de(A){var e,t=A._a;return t&&-2===p(A).overflow&&(e=t[1]<0||t[1]>11?1:t[2]<1||t[2]>RA(t[0],t[1])?2:t[3]<0||t[3]>24||24===t[3]&&(0!==t[4]||0!==t[5]||0!==t[6])?3:t[4]<0||t[4]>59?4:t[5]<0||t[5]>59?5:t[6]<0||t[6]>999?6:-1,p(A)._overflowDayOfYear&&(e<0||e>2)&&(e=2),p(A)._overflowWeeks&&-1===e&&(e=7),p(A)._overflowWeekday&&-1===e&&(e=8),p(A).overflow=e),A}var he=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/Z|[+-]\d\d(?::?\d\d)?/,me=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],ge=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pe=/^\/?Date\((-?\d+)/i,ve=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,_e={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ye(A){var e,t,i,n,r,s,a=A._i,o=he.exec(a)||ce.exec(a);if(o){for(p(A).iso=!0,e=0,t=me.length;e7)&&(o=!0)):(r=A._locale._week.dow,s=A._locale._week.doy,l=NA(Pe(),r,s),t=we(e.gg,A._a[0],l.year),i=we(e.w,l.week),null!=e.d?((n=e.d)<0||n>6)&&(o=!0):null!=e.e?(n=e.e+r,(e.e<0||e.e>6)&&(o=!0)):n=r);i<1||i>QA(t,r,s)?p(A)._overflowWeeks=!0:null!=o?p(A)._overflowWeekday=!0:(a=HA(t,i,n,r,s),A._a[0]=a.year,A._dayOfYear=a.dayOfYear)}(A),null!=A._dayOfYear&&(r=we(A._a[0],i[0]),(A._dayOfYear>MA(r)||0===A._dayOfYear)&&(p(A)._overflowDayOfYear=!0),t=zA(r,0,A._dayOfYear),A._a[1]=t.getUTCMonth(),A._a[2]=t.getUTCDate()),e=0;e<3&&null==A._a[e];++e)A._a[e]=a[e]=i[e];for(;e<7;e++)A._a[e]=a[e]=null==A._a[e]?2===e?1:0:A._a[e];24===A._a[3]&&0===A._a[4]&&0===A._a[5]&&0===A._a[6]&&(A._nextDay=!0,A._a[3]=0),A._d=(A._useUTC?zA:kA).apply(null,a),n=A._useUTC?A._d.getUTCDay():A._d.getDay(),null!=A._tzm&&A._d.setUTCMinutes(A._d.getUTCMinutes()-A._tzm),A._nextDay&&(A._a[3]=24),A._w&&void 0!==A._w.d&&A._w.d!==n&&(p(A).weekdayMismatch=!0)}}function Se(A){if(A._f!==s.ISO_8601)if(A._f!==s.RFC_2822){A._a=[],p(A).empty=!0;var e,t,i,n,r,a,o=""+A._i,l=o.length,u=0;for(i=N(A._f,A._locale).match(M)||[],e=0;e0&&p(A).unusedInput.push(r),o=o.slice(o.indexOf(t)+t.length),u+=t.length),z[n]?(t?p(A).empty=!1:p(A).unusedTokens.push(n),EA(n,t,A)):A._strict&&!t&&p(A).unusedTokens.push(n);p(A).charsLeftOver=l-u,o.length>0&&p(A).unusedInput.push(o),A._a[3]<=12&&!0===p(A).bigHour&&A._a[3]>0&&(p(A).bigHour=void 0),p(A).parsedDateParts=A._a.slice(0),p(A).meridiem=A._meridiem,A._a[3]=function(A,e,t){var i;if(null==t)return e;return null!=A.meridiemHour?A.meridiemHour(e,t):null!=A.isPM?((i=A.isPM(t))&&e<12&&(e+=12),i||12!==e||(e=0),e):e}(A._locale,A._a[3],A._meridiem),null!==(a=p(A).era)&&(A._a[0]=A._locale.erasConvertYear(a,A._a[0])),Re(A),de(A)}else Ee(A);else ye(A)}function De(A){var e=A._i,t=A._f;return A._locale=A._locale||ue(A._l),null===e||void 0===t&&""===e?_({nullInput:!0}):("string"==typeof e&&(A._i=e=A._locale.preparse(e)),R(e)?new w(de(e)):(c(e)?A._d=e:a(t)?function(A){var e,t,i,n,r,s,a=!1;if(0===A._f.length)return p(A).invalidFormat=!0,void(A._d=new Date(NaN));for(n=0;nthis?this:A:_()}));function Ce(A,e){var t,i;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return Pe();for(t=e[0],i=1;i=0?new Date(A+400,e,t)-126227808e5:new Date(A,e,t).valueOf()}function st(A,e,t){return A<100&&A>=0?Date.UTC(A+400,e,t)-126227808e5:Date.UTC(A,e,t)}function at(A,e){return e.erasAbbrRegex(A)}function ot(){var A,e,t=[],i=[],n=[],r=[],s=this.eras();for(A=0,e=s.length;A(r=QA(A,i,n))&&(e=r),dt.call(this,A,e,t,i,n))}function dt(A,e,t,i,n){var r=HA(A,e,t,i,n),s=zA(r.year,0,r.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}j("N",0,0,"eraAbbr"),j("NN",0,0,"eraAbbr"),j("NNN",0,0,"eraAbbr"),j("NNNN",0,0,"eraName"),j("NNNNN",0,0,"eraNarrow"),j("y",["y",1],"yo","eraYear"),j("y",["yy",2],0,"eraYear"),j("y",["yyy",3],0,"eraYear"),j("y",["yyyy",4],0,"eraYear"),gA("N",at),gA("NN",at),gA("NNN",at),gA("NNNN",(function(A,e){return e.erasNameRegex(A)})),gA("NNNNN",(function(A,e){return e.erasNarrowRegex(A)})),yA(["N","NN","NNN","NNNN","NNNNN"],(function(A,e,t,i){var n=t._locale.erasParse(A,i,t._strict);n?p(t).era=n:p(t).invalidEra=A})),gA("y",dA),gA("yy",dA),gA("yyy",dA),gA("yyyy",dA),gA("yo",(function(A,e){return e._eraYearOrdinalRegex||dA})),yA(["y","yy","yyy","yyyy"],0),yA(["yo"],(function(A,e,t,i){var n;t._locale._eraYearOrdinalRegex&&(n=A.match(t._locale._eraYearOrdinalRegex)),t._locale.eraYearOrdinalParse?e[0]=t._locale.eraYearOrdinalParse(A,n):e[0]=parseInt(A,10)})),j(0,["gg",2],0,(function(){return this.weekYear()%100})),j(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),lt("gggg","weekYear"),lt("ggggg","weekYear"),lt("GGGG","isoWeekYear"),lt("GGGGG","isoWeekYear"),U("weekYear","gg"),U("isoWeekYear","GG"),V("weekYear",1),V("isoWeekYear",1),gA("G",hA),gA("g",hA),gA("GG",rA,eA),gA("gg",rA,eA),gA("GGGG",lA,iA),gA("gggg",lA,iA),gA("GGGGG",uA,nA),gA("ggggg",uA,nA),bA(["gggg","ggggg","GGGG","GGGGG"],(function(A,e,t,i){e[i.substr(0,2)]=W(A)})),bA(["gg","GG"],(function(A,e,t,i){e[i]=s.parseTwoDigitYear(A)})),j("Q",0,"Qo","quarter"),U("quarter","Q"),V("quarter",7),gA("Q",AA),yA("Q",(function(A,e){e[1]=3*(W(A)-1)})),j("D",["DD",2],"Do","date"),U("date","D"),V("date",9),gA("D",rA),gA("DD",rA,eA),gA("Do",(function(A,e){return A?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),yA(["D","DD"],2),yA("Do",(function(A,e){e[2]=W(A.match(rA)[0])}));var ht=Z("Date",!0);j("DDD",["DDDD",3],"DDDo","dayOfYear"),U("dayOfYear","DDD"),V("dayOfYear",4),gA("DDD",oA),gA("DDDD",tA),yA(["DDD","DDDD"],(function(A,e,t){t._dayOfYear=W(A)})),j("m",["mm",2],0,"minute"),U("minute","m"),V("minute",14),gA("m",rA),gA("mm",rA,eA),yA(["m","mm"],4);var ct=Z("Minutes",!1);j("s",["ss",2],0,"second"),U("second","s"),V("second",15),gA("s",rA),gA("ss",rA,eA),yA(["s","ss"],5);var ft,mt,gt=Z("Seconds",!1);for(j("S",0,0,(function(){return~~(this.millisecond()/100)})),j(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),j(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),j(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),j(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),j(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),j(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),U("millisecond","ms"),V("millisecond",16),gA("S",oA,AA),gA("SS",oA,eA),gA("SSS",oA,tA),ft="SSSS";ft.length<=9;ft+="S")gA(ft,dA);function pt(A,e){e[6]=W(1e3*("0."+A))}for(ft="S";ft.length<=9;ft+="S")yA(ft,pt);mt=Z("Milliseconds",!1),j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var vt=w.prototype;function _t(A){return A}vt.add=We,vt.calendar=function(A,e){1===arguments.length&&(arguments[0]?Ke(arguments[0])?(A=arguments[0],e=void 0):$e(arguments[0])&&(e=arguments[0],A=void 0):(A=void 0,e=void 0));var t=A||Pe(),i=He(t,this).startOf("day"),n=s.calendarFormat(this,i)||"sameElse",r=e&&(x(e[n])?e[n].call(this,t):e[n]);return this.format(r||this.localeData().calendar(n,this,Pe(t)))},vt.clone=function(){return new w(this)},vt.diff=function(A,e,t){var i,n,r;if(!this.isValid())return NaN;if(!(i=He(A,this)).isValid())return NaN;switch(n=6e4*(i.utcOffset()-this.utcOffset()),e=F(e)){case"year":r=At(this,i)/12;break;case"month":r=At(this,i);break;case"quarter":r=At(this,i)/3;break;case"second":r=(this-i)/1e3;break;case"minute":r=(this-i)/6e4;break;case"hour":r=(this-i)/36e5;break;case"day":r=(this-i-n)/864e5;break;case"week":r=(this-i-n)/6048e5;break;default:r=this-i}return t?r:q(r)},vt.endOf=function(A){var e,t;if(void 0===(A=F(A))||"millisecond"===A||!this.isValid())return this;switch(t=this._isUTC?st:rt,A){case"year":e=t(this.year()+1,0,1)-1;break;case"quarter":e=t(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=t(this.year(),this.month()+1,1)-1;break;case"week":e=t(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=t(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-nt(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-nt(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-nt(e,1e3)-1}return this._d.setTime(e),s.updateOffset(this,!0),this},vt.format=function(A){A||(A=this.isUtc()?s.defaultFormatUtc:s.defaultFormat);var e=H(this,A);return this.localeData().postformat(e)},vt.from=function(A,e){return this.isValid()&&(R(A)&&A.isValid()||Pe(A).isValid())?Ge({to:this,from:A}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},vt.fromNow=function(A){return this.from(Pe(),A)},vt.to=function(A,e){return this.isValid()&&(R(A)&&A.isValid()||Pe(A).isValid())?Ge({from:this,to:A}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},vt.toNow=function(A){return this.to(Pe(),A)},vt.get=function(A){return x(this[A=F(A)])?this[A]():this},vt.invalidAt=function(){return p(this).overflow},vt.isAfter=function(A,e){var t=R(A)?A:Pe(A);return!(!this.isValid()||!t.isValid())&&("millisecond"===(e=F(e)||"millisecond")?this.valueOf()>t.valueOf():t.valueOf()9999?H(t,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(t,"Z")):H(t,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},vt.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var A,e,t,i="moment",n="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",n="Z"),A="["+i+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY","-MM-DD[T]HH:mm:ss.SSS",t=n+'[")]',this.format(A+e+"-MM-DD[T]HH:mm:ss.SSS"+t)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(vt[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),vt.toJSON=function(){return this.isValid()?this.toISOString():null},vt.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},vt.unix=function(){return Math.floor(this.valueOf()/1e3)},vt.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},vt.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},vt.eraName=function(){var A,e,t,i=this.localeData().eras();for(A=0,e=i.length;Athis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},vt.isLocal=function(){return!!this.isValid()&&!this._isUTC},vt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},vt.isUtc=Qe,vt.isUTC=Qe,vt.zoneAbbr=function(){return this._isUTC?"UTC":""},vt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},vt.dates=D("dates accessor is deprecated. Use date instead.",ht),vt.months=D("months accessor is deprecated. Use month instead",TA),vt.years=D("years accessor is deprecated. Use year instead",IA),vt.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(A,e){return null!=A?("string"!=typeof A&&(A=-A),this.utcOffset(A,e),this):-this.utcOffset()})),vt.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!d(this._isDSTShifted))return this._isDSTShifted;var A,e={};return E(e,this),(e=De(e))._a?(A=e._isUTC?g(e._a):Pe(e._a),this._isDSTShifted=this.isValid()&&function(A,e,t){var i,n=Math.min(A.length,e.length),r=Math.abs(A.length-e.length),s=0;for(i=0;i0):this._isDSTShifted=!1,this._isDSTShifted}));var yt=T.prototype;function bt(A,e,t,i){var n=ue(),r=g().set(i,e);return n[t](r,A)}function Et(A,e,t){if(h(A)&&(e=A,A=void 0),A=A||"",null!=e)return bt(A,e,t,"month");var i,n=[];for(i=0;i<12;i++)n[i]=bt(A,i,t,"month");return n}function wt(A,e,t,i){"boolean"==typeof A?(h(e)&&(t=e,e=void 0),e=e||""):(t=e=A,A=!1,h(e)&&(t=e,e=void 0),e=e||"");var n,r=ue(),s=A?r._week.dow:0,a=[];if(null!=t)return bt(e,(t+s)%7,i,"day");for(n=0;n<7;n++)a[n]=bt(e,(n+s)%7,i,"day");return a}yt.calendar=function(A,e,t){var i=this._calendar[A]||this._calendar.sameElse;return x(i)?i.call(e,t):i},yt.longDateFormat=function(A){var e=this._longDateFormat[A],t=this._longDateFormat[A.toUpperCase()];return e||!t?e:(this._longDateFormat[A]=t.match(M).map((function(A){return"MMMM"===A||"MM"===A||"DD"===A||"dddd"===A?A.slice(1):A})).join(""),this._longDateFormat[A])},yt.invalidDate=function(){return this._invalidDate},yt.ordinal=function(A){return this._ordinal.replace("%d",A)},yt.preparse=_t,yt.postformat=_t,yt.relativeTime=function(A,e,t,i){var n=this._relativeTime[t];return x(n)?n(A,e,t,i):n.replace(/%d/i,A)},yt.pastFuture=function(A,e){var t=this._relativeTime[A>0?"future":"past"];return x(t)?t(e):t.replace(/%s/i,e)},yt.set=function(A){var e,t;for(t in A)l(A,t)&&(x(e=A[t])?this[t]=e:this["_"+t]=e);this._config=A,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},yt.eras=function(A,e){var t,i,n,a=this._eras||ue("en")._eras;for(t=0,i=a.length;t=0)return o[i]},yt.erasConvertYear=function(A,e){var t=A.since<=A.until?1:-1;return void 0===e?s(A.since).year():s(A.since).year()+(e-A.offset)*t},yt.erasAbbrRegex=function(A){return l(this,"_erasAbbrRegex")||ot.call(this),A?this._erasAbbrRegex:this._erasRegex},yt.erasNameRegex=function(A){return l(this,"_erasNameRegex")||ot.call(this),A?this._erasNameRegex:this._erasRegex},yt.erasNarrowRegex=function(A){return l(this,"_erasNarrowRegex")||ot.call(this),A?this._erasNarrowRegex:this._erasRegex},yt.months=function(A,e){return A?a(this._months)?this._months[A.month()]:this._months[(this._months.isFormat||OA).test(e)?"format":"standalone"][A.month()]:a(this._months)?this._months:this._months.standalone},yt.monthsShort=function(A,e){return A?a(this._monthsShort)?this._monthsShort[A.month()]:this._monthsShort[OA.test(e)?"format":"standalone"][A.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},yt.monthsParse=function(A,e,t){var i,n,r;if(this._monthsParseExact)return xA.call(this,A,e,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(n=g([2e3,i]),t&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[i]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),t&&"MMMM"===e&&this._longMonthsParse[i].test(A))return i;if(t&&"MMM"===e&&this._shortMonthsParse[i].test(A))return i;if(!t&&this._monthsParse[i].test(A))return i}},yt.monthsRegex=function(A){return this._monthsParseExact?(l(this,"_monthsRegex")||BA.call(this),A?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=LA),this._monthsStrictRegex&&A?this._monthsStrictRegex:this._monthsRegex)},yt.monthsShortRegex=function(A){return this._monthsParseExact?(l(this,"_monthsRegex")||BA.call(this),A?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=PA),this._monthsShortStrictRegex&&A?this._monthsShortStrictRegex:this._monthsShortRegex)},yt.week=function(A){return NA(A,this._week.dow,this._week.doy).week},yt.firstDayOfYear=function(){return this._week.doy},yt.firstDayOfWeek=function(){return this._week.dow},yt.weekdays=function(A,e){var t=a(this._weekdays)?this._weekdays:this._weekdays[A&&!0!==A&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===A?UA(t,this._week.dow):A?t[A.day()]:t},yt.weekdaysMin=function(A){return!0===A?UA(this._weekdaysMin,this._week.dow):A?this._weekdaysMin[A.day()]:this._weekdaysMin},yt.weekdaysShort=function(A){return!0===A?UA(this._weekdaysShort,this._week.dow):A?this._weekdaysShort[A.day()]:this._weekdaysShort},yt.weekdaysParse=function(A,e,t){var i,n,r;if(this._weekdaysParseExact)return WA.call(this,A,e,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(n=g([2e3,1]).day(i),t&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),t&&"dddd"===e&&this._fullWeekdaysParse[i].test(A))return i;if(t&&"ddd"===e&&this._shortWeekdaysParse[i].test(A))return i;if(t&&"dd"===e&&this._minWeekdaysParse[i].test(A))return i;if(!t&&this._weekdaysParse[i].test(A))return i}},yt.weekdaysRegex=function(A){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ZA.call(this),A?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=VA),this._weekdaysStrictRegex&&A?this._weekdaysStrictRegex:this._weekdaysRegex)},yt.weekdaysShortRegex=function(A){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ZA.call(this),A?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=YA),this._weekdaysShortStrictRegex&&A?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},yt.weekdaysMinRegex=function(A){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ZA.call(this),A?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qA),this._weekdaysMinStrictRegex&&A?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},yt.isPM=function(A){return"p"===(A+"").toLowerCase().charAt(0)},yt.meridiem=function(A,e,t){return A>11?t?"pm":"PM":t?"am":"AM"},oe("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(A){var e=A%10;return A+(1===W(A%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),s.lang=D("moment.lang is deprecated. Use moment.locale instead.",oe),s.langData=D("moment.langData is deprecated. Use moment.localeData instead.",ue);var Rt=Math.abs;function St(A,e,t,i){var n=Ge(e,t);return A._milliseconds+=i*n._milliseconds,A._days+=i*n._days,A._months+=i*n._months,A._bubble()}function Dt(A){return A<0?Math.floor(A):Math.ceil(A)}function Ot(A){return 4800*A/146097}function Pt(A){return 146097*A/4800}function Lt(A){return function(){return this.as(A)}}var xt=Lt("ms"),Ct=Lt("s"),Tt=Lt("m"),Bt=Lt("h"),Mt=Lt("d"),It=Lt("w"),kt=Lt("M"),zt=Lt("Q"),jt=Lt("y");function Ht(A){return function(){return this.isValid()?this._data[A]:NaN}}var Nt=Ht("milliseconds"),Qt=Ht("seconds"),Ut=Ht("minutes"),Ft=Ht("hours"),Gt=Ht("days"),Xt=Ht("months"),Vt=Ht("years");var Yt=Math.round,qt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Wt(A,e,t,i,n){return n.relativeTime(e||1,!!t,A,i)}var Zt=Math.abs;function Jt(A){return(A>0)-(A<0)||+A}function Kt(){if(!this.isValid())return this.localeData().invalidDate();var A,e,t,i,n,r,s,a,o=Zt(this._milliseconds)/1e3,l=Zt(this._days),u=Zt(this._months),d=this.asSeconds();return d?(A=q(o/60),e=q(A/60),o%=60,A%=60,t=q(u/12),u%=12,i=o?o.toFixed(3).replace(/\.?0+$/,""):"",n=d<0?"-":"",r=Jt(this._months)!==Jt(d)?"-":"",s=Jt(this._days)!==Jt(d)?"-":"",a=Jt(this._milliseconds)!==Jt(d)?"-":"",n+"P"+(t?r+t+"Y":"")+(u?r+u+"M":"")+(l?s+l+"D":"")+(e||A||o?"T":"")+(e?a+e+"H":"")+(A?a+A+"M":"")+(o?a+i+"S":"")):"P0D"}var $t=Be.prototype;$t.isValid=function(){return this._isValid},$t.abs=function(){var A=this._data;return this._milliseconds=Rt(this._milliseconds),this._days=Rt(this._days),this._months=Rt(this._months),A.milliseconds=Rt(A.milliseconds),A.seconds=Rt(A.seconds),A.minutes=Rt(A.minutes),A.hours=Rt(A.hours),A.months=Rt(A.months),A.years=Rt(A.years),this},$t.add=function(A,e){return St(this,A,e,1)},$t.subtract=function(A,e){return St(this,A,e,-1)},$t.as=function(A){if(!this.isValid())return NaN;var e,t,i=this._milliseconds;if("month"===(A=F(A))||"quarter"===A||"year"===A)switch(e=this._days+i/864e5,t=this._months+Ot(e),A){case"month":return t;case"quarter":return t/3;case"year":return t/12}else switch(e=this._days+Math.round(Pt(this._months)),A){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+A)}},$t.asMilliseconds=xt,$t.asSeconds=Ct,$t.asMinutes=Tt,$t.asHours=Bt,$t.asDays=Mt,$t.asWeeks=It,$t.asMonths=kt,$t.asQuarters=zt,$t.asYears=jt,$t.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*W(this._months/12):NaN},$t._bubble=function(){var A,e,t,i,n,r=this._milliseconds,s=this._days,a=this._months,o=this._data;return r>=0&&s>=0&&a>=0||r<=0&&s<=0&&a<=0||(r+=864e5*Dt(Pt(a)+s),s=0,a=0),o.milliseconds=r%1e3,A=q(r/1e3),o.seconds=A%60,e=q(A/60),o.minutes=e%60,t=q(e/60),o.hours=t%24,s+=q(t/24),a+=n=q(Ot(s)),s-=Dt(Pt(n)),i=q(a/12),a%=12,o.days=s,o.months=a,o.years=i,this},$t.clone=function(){return Ge(this)},$t.get=function(A){return A=F(A),this.isValid()?this[A+"s"]():NaN},$t.milliseconds=Nt,$t.seconds=Qt,$t.minutes=Ut,$t.hours=Ft,$t.days=Gt,$t.weeks=function(){return q(this.days()/7)},$t.months=Xt,$t.years=Vt,$t.humanize=function(A,e){if(!this.isValid())return this.localeData().invalidDate();var t,i,n=!1,s=qt;return"object"===r(A)&&(e=A,A=!1),"boolean"==typeof A&&(n=A),"object"===r(e)&&(s=Object.assign({},qt,e),null!=e.s&&null==e.ss&&(s.ss=e.s-1)),i=function(A,e,t,i){var n=Ge(A).abs(),r=Yt(n.as("s")),s=Yt(n.as("m")),a=Yt(n.as("h")),o=Yt(n.as("d")),l=Yt(n.as("M")),u=Yt(n.as("w")),d=Yt(n.as("y")),h=r<=t.ss&&["s",r]||r0,h[4]=i,Wt.apply(null,h)}(this,!n,s,t=this.localeData()),n&&(i=t.pastFuture(+this,i)),t.postformat(i)},$t.toISOString=Kt,$t.toString=Kt,$t.toJSON=Kt,$t.locale=et,$t.localeData=it,$t.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Kt),$t.lang=tt,j("X",0,0,"unix"),j("x",0,0,"valueOf"),gA("x",hA),gA("X",/[+-]?\d+(\.\d{1,3})?/),yA("X",(function(A,e,t){t._d=new Date(1e3*parseFloat(A))})),yA("x",(function(A,e,t){t._d=new Date(W(A))})),//! moment.js +s.version="2.29.1",i=Pe,s.fn=vt,s.min=function(){var A=[].slice.call(arguments,0);return Ce("isBefore",A)},s.max=function(){var A=[].slice.call(arguments,0);return Ce("isAfter",A)},s.now=function(){return Date.now?Date.now():+new Date},s.utc=g,s.unix=function(A){return Pe(1e3*A)},s.months=function(A,e){return Et(A,e,"months")},s.isDate=c,s.locale=oe,s.invalid=_,s.duration=Ge,s.isMoment=R,s.weekdays=function(A,e,t){return wt(A,e,t,"weekdays")},s.parseZone=function(){return Pe.apply(null,arguments).parseZone()},s.localeData=ue,s.isDuration=Me,s.monthsShort=function(A,e){return Et(A,e,"monthsShort")},s.weekdaysMin=function(A,e,t){return wt(A,e,t,"weekdaysMin")},s.defineLocale=le,s.updateLocale=function(A,e){if(null!=e){var t,i,n=te;null!=ie[A]&&null!=ie[A].parentLocale?ie[A].set(C(ie[A]._config,e)):(null!=(i=ae(A))&&(n=i._config),e=C(n,e),null==i&&(e.abbr=A),(t=new T(e)).parentLocale=ie[A],ie[A]=t),oe(A)}else null!=ie[A]&&(null!=ie[A].parentLocale?(ie[A]=ie[A].parentLocale,A===oe()&&oe(A)):null!=ie[A]&&delete ie[A]);return ie[A]},s.locales=function(){return O(ie)},s.weekdaysShort=function(A,e,t){return wt(A,e,t,"weekdaysShort")},s.normalizeUnits=F,s.relativeTimeRounding=function(A){return void 0===A?Yt:"function"==typeof A&&(Yt=A,!0)},s.relativeTimeThreshold=function(A,e){return void 0!==qt[A]&&(void 0===e?qt[A]:(qt[A]=e,"s"===A&&(qt.ss=e-1),!0))},s.calendarFormat=function(A,e){var t=A.diff(e,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},s.prototype=vt,s.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},e.a=s}).call(this,t(18)(A))},function(A,e,t){"use strict";var i=t(3),n=t.n(i)()((function(A){return A[1]}));n.push([A.i,".flvWai,.flvWai>.videoFlv{\r\n width: 100%; \r\n height: 100%; \r\n}\r\n.flvWai>.videoFlv:hover{\r\n outline: none;\r\n}",""]),e.a=n},function(A,e,t){"use strict";var i=t(3),n=t.n(i)()((function(A){return A[1]}));n.push([A.i,'.timerComCss{\r\n font-family: "fontInit";\r\n color: rgb(47, 233, 242);\r\n font-size: 20px;\r\n letter-spacing: 2px;\r\n}\r\np{\r\n margin: 0;\r\n padding: 0;\r\n}',""]),e.a=n},function(A,e,t){"use strict";var i=t(3),n=t.n(i)()((function(A){return A[1]}));n.push([A.i,"img{\r\n width: 100%;\r\n}",""]),e.a=n},function(A,e,t){"use strict";var i=t(3),n=t.n(i)()((function(A){return A[1]}));n.push([A.i,"input:focus{\r\n outline: none;\r\n}\r\ninput{\r\n border-radius: 5px;\r\n}",""]),e.a=n},function(A,e,t){"use strict";var i=t(3),n=t.n(i)()((function(A){return A[1]}));n.push([A.i,".buttonFunAreaSelectPlus{\r\n position: absolute;\r\n right: -100px;\r\n top: 0;\r\n width: 100px;\r\n height: 50px;\r\n text-align: center;\r\n line-height: 50px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n.buttonFunAreaSelectPlus:nth-child(2){\r\n top: 50px;\r\n}",""]),e.a=n},function(A,e,t){"use strict";t.r(e);var i=t(4); //! moment.js locale configuration //! locale : Chinese (China) [zh-cn] //! author : suupic : https://github.com/suupic //! author : Zeno Zeng : https://github.com/zenozeng //! author : uu109 : https://github.com/uu109 -t.default=n.a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,i){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})},function(e,t,i){"use strict"; +e.default=i.a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(A,e){return 12===A&&(A=0),"凌晨"===e||"早上"===e||"上午"===e?A:"下午"===e||"晚上"===e?A+12:A>=11?A:A+12},meridiem:function(A,e,t){var i=100*A+e;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(A){return A.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(A){return this.week()!==A.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(A,e){switch(e){case"d":case"D":case"DDD":return A+"日";case"M":return A+"月";case"w":case"W":return A+"周";default:return A}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})},function(A,e){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB9AAAAfQCAYAAACaOMR5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpmNjA4MzMzOS03MTVlLTExNGMtOWQ5YS05ODBkZGIyNjQxNGEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUZEMkFGNUJEMDg4MTFFOTg4MkZBMTkzNjg1OTc4RDYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUZEMkFGNUFEMDg4MTFFOTg4MkZBMTkzNjg1OTc4RDYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDkxMTYwNmEtMzljNC0xYjQ4LWJhOGUtZjRjYzEzNzQ4N2M3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOmY2MDgzMzM5LTcxNWUtMTE0Yy05ZDlhLTk4MGRkYjI2NDE0YSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmRzkwkAAQHbSURBVHja7NlBEYAAEMSwBf+ej5naIJHQb5+7GwAAAAAAAAD83SsBAAAAAAAAABjoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAAAGAGOgAAAAAAAADEQAcAAAAAAACAGegAAAAAAAAAEAMdAAAAAAAAAGagAwAAAAAAAEAMdAAAAAAAAACYgQ4AAAAAAAAAMdABAAAAAAAAYAY6AAAAAAAAAMRABwAAAAAAAIAZ6AAAAAAAAAAQAx0AAAAAAAAAZqADAAAAAAAAQAx0AAAAAAAAAJiBDgAAAAAAAAAx0AEAAAAAAABgBjoAAAAAAAAAxEAHAAAAAAAAgBnoAAAAAAAAABADHQAAAAAAAABmoAMAAAAAAABADHQAAAAAAAAAmIEOAAAAAAAAADHQAQAAAAAA4GPvPuAkK8t88T/VuWcGmBkGJEcxgeQMRoICIoKC4eqa7u69hrvKKoJEiYLooq6u/7+76up6DaAgIkEEEzkHwUQawsAAAzPApI516z1V1V1d06Gmq2c6fb9+jlVdVV0zvFP1nlPPr573AIQAHQAAAAAAAAAyAnQAAAAAAAAACAE6AAAAAAAAAGQE6AAAAAAAAAAQAnQAAAAAAAAAyAjQAQAAAAAAACAE6AAAAAAAAACQEaADAAAAAAAAQAjQAQAAAAAAACAjQAcAAAAAAACAEKADAAAAAAAAQEaADgAAAAAAAAAhQAcAAAAAAACAjAAdAAAAAAAAAEKADgAAAAAAAAAZAToAAAAAAAAAhAAdAAAAAAAAADICdAAAAAAAAAAIAToAAAAAAAAAZAToAAAAAAAAABACdAAAAAAAAADICNABAAAAAAAAIAToAAAAAAAAAJARoAMAAAAAAABACNABAAAAAAAAICNABwAAAAAAAIAQoAMAAAAAAABARoAOAAAAAAAAACFABwAAAAAAAICMAB0AAAAAAAAAQoAOAAAAAAAAABkBOgAAAAAAAACEAB0AAAAAAAAAMgJ0AAAAAAAAAAgBOgAAAAAAAABkBOgAAAAAAAAAEAJ0AAAAAAAAAMgI0AEAAAAAAAAgBOgAAAAAAAAAkBGgAwAAAAAAAEAI0AEAAAAAAAAgI0AHAAAAAAAAgBCgAwAAAAAAAEBGgA4AAAAAAAAAIUAHAAAAAAAAgIwAHQAAAAAAAABCgA4AAAAAAAAAGQE6AAAAAAAAAIQAHQAAAAAAAAAyAnQAAAAAAAAACAE6AAAAAAAAAGQE6AAAAAAAAAAQAnQAAAAAAAAAyAjQAQAAAAAAACAE6AAAAAAAAACQEaADAAAAAAAAQAjQAQAAAAAAACAjQAcAAAAAAACAEKADAAAAAAAAQEaADgAAAAAAAAAhQAcAAAAAAACAjAAdAAAAAAAAAEKADgAAAAAAAAAZAToAAAAAAAAAhAAdAAAAAAAAADICdAAAAAAAAAAIAToAAAAAAAAAZAToAAAAAAAAABACdAAAAAAAAADICNABAAAAAAAAIAToAAAAAAAAAJARoAMAAAAAAABACNABAAAAAAAAICNABwAAAAAAAIAQoAMAAAAAAABARoAOAAAAAAAAACFABwAAAAAAAICMAB0AAAAAAAAAQoAOAAAAAAAAABkBOgAAAAAAAACEAB0AAAAAAAAAMgJ0AAAAAAAAAAgBOgAAAAAAAABkBOgAAAAAAAAAEAJ0AAAAAAAAAMgI0AEAAAAAAAAgBOgAAAAAAAAAkBGgAwAAAAAAAEAI0AEAAAAAAAAgI0AHAAAAAAAAgBCgAwAAAAAAAEBGgA4AAAAAAAAAIUAHAAAAAAAAgIwAHQAAAAAAAABCgA4AAAAAAAAAGQE6AAAAAAAAAIQAHQAAAAAAAAAyAnQAAAAAAAAACAE6AAAAAAAAAGQE6AAAAAAAAAAQAnQAAAAAAAAAyAjQAQAAAAAAACAE6AAAAAAAAACQEaADAAAAAAAAQAjQAQAAAAAAACAjQAcAAAAAAACAEKADAAAAAAAAQEaADgAAAAAAAAAhQAcAAAAAAACAjAAdAAAAAAAAAEKADgAAAAAAAAAZAToAAAAAAAAAhAAdAAAAAAAAADICdAAAAAAAAAAIAToAAAAAAAAAZAToAAAAAAAAABAC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AAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgAwAAAAAAAEAmoAMAAAAAAABACOgAAAAAAAAAkAnoAAAAAAAAABACOgAAAAAAAABkAjoAAAAAAAAAhIAOAAAAAAAAAJmADgAAAAAAAAAhoAMAAAAAAABAJqADAAAAAAAAQAjoAAAAAAAAAJAJ6AAAAAAAAAAQAjoAAAAAAAAAZAI6AAAAAAAAAISADgAAAAAAAACZgA4AAAAAAAAAIaADAAAAAAAAQCagAwAAAAAAAEAI6AAAAAAAAACQCegAAAAAAAAAEAI6AAAAAAAAAGQCOgAAAAAAAACEgA4AAAAAAAAAmYAOAAAAAAAAACGgA/z/9uyABgAAAGGQ/VO7PQfUAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAACLQAQAAAAAAAGACHQAAAAAAAAAi0AEAAAAAAABgAh0AAAAAAAAAItABAAAAAAAAYAIdAAAAAAAAAHJyCPfT6lZNogAAAABJRU5ErkJggg=="},function(A,e,t){"use strict"; /** @license React v17.0.1 * react.production.min.js * @@ -19,16 +19,16 @@ t.default=n.a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var n=i(10),r=60103,s=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var a=60109,o=60110,l=60112;t.Suspense=60113;var h=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;r=d("react.element"),s=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),a=d("react.provider"),o=d("react.context"),l=d("react.forward_ref"),t.Suspense=d("react.suspense"),h=d("react.memo"),u=d("react.lazy")}var c="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,i=1;i1)for(var i=1;i ${t}`;h.ENABLE_CALLBACK&&h.emitter.emit("log","error",i),h.ENABLE_ERROR&&(console.error?console.error(i):console.warn?console.warn(i):console.log(i))}static i(e,t){e&&!h.FORCE_GLOBAL_TAG||(e=h.GLOBAL_TAG);let i=`[${e}] > ${t}`;h.ENABLE_CALLBACK&&h.emitter.emit("log","info",i),h.ENABLE_INFO&&(console.info?console.info(i):console.log(i))}static w(e,t){e&&!h.FORCE_GLOBAL_TAG||(e=h.GLOBAL_TAG);let i=`[${e}] > ${t}`;h.ENABLE_CALLBACK&&h.emitter.emit("log","warn",i),h.ENABLE_WARN&&(console.warn?console.warn(i):console.log(i))}static d(e,t){e&&!h.FORCE_GLOBAL_TAG||(e=h.GLOBAL_TAG);let i=`[${e}] > ${t}`;h.ENABLE_CALLBACK&&h.emitter.emit("log","debug",i),h.ENABLE_DEBUG&&(console.debug?console.debug(i):console.log(i))}static v(e,t){e&&!h.FORCE_GLOBAL_TAG||(e=h.GLOBAL_TAG);let i=`[${e}] > ${t}`;h.ENABLE_CALLBACK&&h.emitter.emit("log","verbose",i),h.ENABLE_VERBOSE&&console.log(i)}}h.GLOBAL_TAG="flv.js",h.FORCE_GLOBAL_TAG=!1,h.ENABLE_ERROR=!0,h.ENABLE_INFO=!0,h.ENABLE_WARN=!0,h.ENABLE_DEBUG=!0,h.ENABLE_VERBOSE=!0,h.ENABLE_CALLBACK=!1,h.emitter=new l.a;var u=h;var d=class{constructor(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}reset(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0}addBytes(e){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())}get currentKBps(){this.addBytes(0);let e=(this._now()-this._lastCheckpoint)/1e3;return 0==e&&(e=1),this._intervalBytes/e/1024}get lastSecondKBps(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}get averageKBps(){let e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}};class c{constructor(e){this._message=e}get name(){return"RuntimeException"}get message(){return this._message}toString(){return this.name+": "+this.message}}class f extends c{constructor(e){super(e)}get name(){return"IllegalStateException"}}class _ extends c{constructor(e){super(e)}get name(){return"InvalidArgumentException"}}class m extends c{constructor(e){super(e)}get name(){return"NotImplementedException"}}const p={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},g={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"};class y{constructor(e){this._type=e||"undefined",this._status=p.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}destroy(){this._status=p.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}isWorking(){return this._status===p.kConnecting||this._status===p.kBuffering}get type(){return this._type}get status(){return this._status}get needStashBuffer(){return this._needStash}get onContentLengthKnown(){return this._onContentLengthKnown}set onContentLengthKnown(e){this._onContentLengthKnown=e}get onURLRedirect(){return this._onURLRedirect}set onURLRedirect(e){this._onURLRedirect=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}open(e,t){throw new m("Unimplemented abstract function!")}abort(){throw new m("Unimplemented abstract function!")}}let v={};!function(){let e=self.navigator.userAgent.toLowerCase(),t=/(edge)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(chrome)[ \/]([\w.]+)/.exec(e)||/(iemobile)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],i=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],n={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:i[0]||""},r={};if(n.browser){r[n.browser]=!0;let e=n.majorVersion.split(".");r.version={major:parseInt(n.majorVersion,10),string:n.version},e.length>1&&(r.version.minor=parseInt(e[1],10)),e.length>2&&(r.version.build=parseInt(e[2],10))}if(n.platform&&(r[n.platform]=!0),(r.chrome||r.opr||r.safari)&&(r.webkit=!0),r.rv||r.iemobile){r.rv&&delete r.rv;let e="msie";n.browser=e,r[e]=!0}if(r.edge){delete r.edge;let e="msedge";n.browser=e,r[e]=!0}if(r.opr){let e="opera";n.browser=e,r[e]=!0}if(r.safari&&r.android){let e="android";n.browser=e,r[e]=!0}r.name=n.browser,r.platform=n.platform;for(let e in v)v.hasOwnProperty(e)&&delete v[e];Object.assign(v,r)}();var A=v;var S=class extends y{static isSupported(){try{let e=A.msedge&&A.version.minor>=15048,t=!A.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}constructor(e,t){super("fetch-stream-loader"),this.TAG="FetchStreamLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._requestAbort=!1,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&null!=e.redirectedURL&&(i=e.redirectedURL);let n=this._seekHandler.getConfig(i,t),r=new self.Headers;if("object"==typeof n.headers){let e=n.headers;for(let t in e)e.hasOwnProperty(t)&&r.append(t,e[t])}let s={method:"GET",headers:r,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(let e in this._config.headers)r.append(e,this._config.headers[e]);!1===e.cors&&(s.mode="same-origin"),e.withCredentials&&(s.credentials="include"),e.referrerPolicy&&(s.referrerPolicy=e.referrerPolicy),this._status=p.kConnecting,self.fetch(n.url,s).then(e=>{if(this._requestAbort)return this._requestAbort=!1,void(this._status=p.kIdle);if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==n.url&&this._onURLRedirect){let t=this._seekHandler.removeURLParameters(e.url);this._onURLRedirect(t)}let t=e.headers.get("Content-Length");return null!=t&&(this._contentLength=parseInt(t),0!==this._contentLength&&this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)),this._pump.call(this,e.body.getReader())}if(this._status=p.kError,!this._onError)throw new c("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);this._onError(g.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}).catch(e=>{if(this._status=p.kError,!this._onError)throw e;this._onError(g.EXCEPTION,{code:-1,msg:e.message})})}abort(){this._requestAbort=!0}_pump(e){return e.read().then(t=>{if(t.done)if(null!==this._contentLength&&this._receivedLength{if(11===e.code&&A.msedge)return;this._status=p.kError;let t=0,i=null;if(19!==e.code&&"network error"!==e.message||!(null===this._contentLength||null!==this._contentLength&&this._receivedLength299)){if(this._status=p.kError,!this._onError)throw new c("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(g.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=p.kBuffering}}_onProgress(e){if(this._status===p.kError)return;null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));let t=e.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onLoadEnd(e){!0!==this._requestAbort?this._status!==p.kError&&(this._status=p.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1}_onXhrError(e){this._status=p.kError;let t=0,i=null;if(this._contentLength&&e.loaded=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)}_internalOpen(e,t){this._lastTimeLoaded=0;let i=e.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?i=this._currentRedirectedURL:null!=e.redirectedURL&&(i=e.redirectedURL));let n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"==typeof n.headers){let e=n.headers;for(let t in e)e.hasOwnProperty(t)&&r.setRequestHeader(t,e[t])}if("object"==typeof this._config.headers){let e=this._config.headers;for(let t in e)e.hasOwnProperty(t)&&r.setRequestHeader(t,e[t])}r.send()}abort(){this._requestAbort=!0,this._internalAbort(),this._status=p.kComplete}_internalAbort(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}_onReadyStateChange(e){let t=e.target;if(2===t.readyState){if(null!=t.responseURL){let e=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&e!==this._currentRedirectedURL&&(this._currentRedirectedURL=e,this._onURLRedirect&&this._onURLRedirect(e))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=p.kBuffering}else{if(this._status=p.kError,!this._onError)throw new c("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(g.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}}_onProgress(e){if(this._status===p.kError)return;if(null===this._contentLength){let t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;let i=e.total;this._internalAbort(),null!=i&0!==i&&(this._totalLength=i)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}let t=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(t)}_normalizeSpeed(e){let t=this._chunkSizeKBList,i=t.length-1,n=0,r=0,s=i;if(e=t[n]&&e=3&&(t=this._speedSampler.currentKBps)),0!==t){let e=this._normalizeSpeed(t);this._currentSpeedNormalized!==e&&(this._currentSpeedNormalized=e,this._currentChunkSizeKB=e)}let i=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;let r=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength{this._dispatchArrayBuffer(t.result)},t.readAsArrayBuffer(e.data)}else{this._status=p.kError;let t={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(!this._onError)throw new c(t.msg);this._onError(g.EXCEPTION,t)}}_dispatchArrayBuffer(e){let t=e,i=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onWebSocketError(e){this._status=p.kError;let t={code:e.code,msg:e.message};if(!this._onError)throw new c(t.msg);this._onError(g.EXCEPTION,t)}};var R=class{constructor(e){this._zeroStart=e||!1}getConfig(e,t){let i={};if(0!==t.from||-1!==t.to){let e;e=-1!==t.to?`bytes=${t.from.toString()}-${t.to.toString()}`:`bytes=${t.from.toString()}-`,i.Range=e}else this._zeroStart&&(i.Range="bytes=0-");return{url:e,headers:i}}removeURLParameters(e){return e}};var D=class{constructor(e,t){this._startName=e,this._endName=t}getConfig(e,t){let i=e;if(0!==t.from||-1!==t.to){let e=!0;-1===i.indexOf("?")&&(i+="?",e=!1),e&&(i+="&"),i+=`${this._startName}=${t.from.toString()}`,-1!==t.to&&(i+=`&${this._endName}=${t.to.toString()}`)}return{url:i,headers:{}}}removeURLParameters(e){let t=e.split("?")[0],i=void 0,n=e.indexOf("?");-1!==n&&(i=e.substring(n+1));let r="";if(null!=i&&i.length>0){let e=i.split("&");for(let t=0;t0;i[0]!==this._startName&&i[0]!==this._endName&&(n&&(r+="&"),r+=e[t])}}return 0===r.length?t:t+"?"+r}};var k=class{constructor(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=393216,null!=t.stashInitialSize&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===t.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new d,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}destroy(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}isWorking(){return this._loader&&this._loader.isWorking()&&!this._paused}isPaused(){return this._paused}get status(){return this._loader.status}get extraData(){return this._extraData}set extraData(e){this._extraData=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onSeeked(){return this._onSeeked}set onSeeked(e){this._onSeeked=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}get onRedirect(){return this._onRedirect}set onRedirect(e){this._onRedirect=e}get onRecoveredEarlyEof(){return this._onRecoveredEarlyEof}set onRecoveredEarlyEof(e){this._onRecoveredEarlyEof=e}get currentURL(){return this._dataSource.url}get hasRedirect(){return null!=this._redirectedURL||null!=this._dataSource.redirectedURL}get currentRedirectedURL(){return this._redirectedURL||this._dataSource.redirectedURL}get currentSpeed(){return this._loaderClass===E?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}get loaderType(){return this._loader.type}_selectSeekHandler(){let e=this._config;if("range"===e.seekType)this._seekHandler=new R(this._config.rangeLoadZeroStart);else if("param"===e.seekType){let t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new D(t,i)}else{if("custom"!==e.seekType)throw new _("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new _("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}}_selectLoader(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=w;else if(S.isSupported())this._loaderClass=S;else if(b.isSupported())this._loaderClass=b;else{if(!E.isSupported())throw new c("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=E}}_createLoader(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}open(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}abort(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}pause(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}resume(){if(this._paused){this._paused=!1;let e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}seek(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}_internalSeek(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;let i={from:e,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()}updateUrl(e){if(!e||"string"!=typeof e||0===e.length)throw new _("Url must be a non-empty string!");this._dataSource.url=e}_expandBuffer(e){let t=this._stashSize;for(;t+10485760){let e=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(e,0)}this._stashBuffer=i,this._bufferSize=t}_normalizeSpeed(e){let t=this._speedNormalizeList,i=t.length-1,n=0,r=0,s=i;if(e=t[n]&&e=512&&e<=1024?Math.floor(1.5*e):2*e,t>8192&&(t=8192);let i=1024*t+1048576;this._bufferSize0){let t=this._stashBuffer.slice(0,this._stashUsed),n=this._dispatchChunks(t,this._stashByteStart);if(n0){let e=new Uint8Array(t,n);i.set(e,0),this._stashUsed=e.byteLength,this._stashByteStart+=n}}else this._stashUsed=0,this._stashByteStart+=n;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),i=new Uint8Array(this._stashBuffer,0,this._bufferSize)),i.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{let n=this._dispatchChunks(e,t);if(nthis._bufferSize&&(this._expandBuffer(r),i=new Uint8Array(this._stashBuffer,0,this._bufferSize)),i.set(new Uint8Array(e,n),0),this._stashUsed+=r,this._stashByteStart=t+n}}}else if(0===this._stashUsed){let i=this._dispatchChunks(e,t);if(ithis._bufferSize&&this._expandBuffer(n),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,i),0),this._stashUsed+=n,this._stashByteStart=t+i}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);let t=new Uint8Array(this._stashBuffer,0,this._bufferSize);t.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;let i=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(i0){let e=new Uint8Array(this._stashBuffer,i);t.set(e,0)}this._stashUsed-=i,this._stashByteStart+=i}}_flushStashBuffer(e){if(this._stashUsed>0){let t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),n=t.byteLength-i;if(i0){let e=new Uint8Array(this._stashBuffer,0,this._bufferSize),n=new Uint8Array(t,i);e.set(n,0),this._stashUsed=n.byteLength,this._stashByteStart+=i}return 0}u.w(this.TAG,n+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,n}return 0}_onLoaderComplete(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}_onLoaderError(e,t){switch(u.e(this.TAG,`Loader error, code = ${t.code}, msg = ${t.msg}`),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=g.UNRECOVERABLE_EARLY_EOF),e){case g.EARLY_EOF:if(!this._config.isLive&&this._totalLength){let e=this._currentRange.to+1;return void(e0){let t=x.getConfig();e.emit("change",t)}}static registerListener(e){x.emitter.addListener("change",e)}static removeListener(e){x.emitter.removeListener("change",e)}static addLogListener(e){u.emitter.addListener("log",e),u.emitter.listenerCount("log")>0&&(u.ENABLE_CALLBACK=!0,x._notifyChange())}static removeLogListener(e){u.emitter.removeListener("log",e),0===u.emitter.listenerCount("log")&&(u.ENABLE_CALLBACK=!1,x._notifyChange())}}x.emitter=new l.a;var I=x;var B=class{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,n=e.length-1,r=0,s=0,a=n;for(t=e[r]&&t=128){t.push(String.fromCharCode(65535&e)),n+=2;continue}}}else if(i[n]<240){if(P(i,n,2)){let e=(15&i[n])<<12|(63&i[n+1])<<6|63&i[n+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),n+=3;continue}}}else if(i[n]<248&&P(i,n,3)){let e=(7&i[n])<<18|(63&i[n+1])<<12|(63&i[n+2])<<6|63&i[n+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),n+=4;continue}}t.push(String.fromCharCode(65533)),++n}return t.join("")};let N=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class F{static parseScriptData(e,t,i){let n={};try{let r=F.parseValue(e,t,i),s=F.parseValue(e,t+r.size,i-r.size);n[r.data]=s.data}catch(e){u.e("AMF",e.toString())}return n}static parseObject(e,t,i){if(i<3)throw new f("Data not enough when parse ScriptDataObject");let n=F.parseString(e,t,i),r=F.parseValue(e,t+n.size,i-n.size),s=r.objectEnd;return{data:{name:n.data,value:r.data},size:n.size+r.size,objectEnd:s}}static parseVariable(e,t,i){return F.parseObject(e,t,i)}static parseString(e,t,i){if(i<2)throw new f("Data not enough when parse String");let n,r=new DataView(e,t,i).getUint16(0,!N);return n=r>0?U(new Uint8Array(e,t+2,r)):"",{data:n,size:2+r}}static parseLongString(e,t,i){if(i<4)throw new f("Data not enough when parse LongString");let n,r=new DataView(e,t,i).getUint32(0,!N);return n=r>0?U(new Uint8Array(e,t+4,r)):"",{data:n,size:4+r}}static parseDate(e,t,i){if(i<10)throw new f("Data size invalid when parse Date");let n=new DataView(e,t,i),r=n.getFloat64(0,!N);return r+=60*n.getInt16(8,!N)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){if(i<1)throw new f("Data not enough when parse Value");let n,r=new DataView(e,t,i),s=1,a=r.getUint8(0),o=!1;try{switch(a){case 0:n=r.getFloat64(1,!N),s+=8;break;case 1:n=!!r.getUint8(1),s+=1;break;case 2:{let r=F.parseString(e,t+1,i-1);n=r.data,s+=r.size;break}case 3:{n={};let a=0;for(9==(16777215&r.getUint32(i-4,!N))&&(a=3);s32)throw new _("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let n=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}};class q{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(n[r]=t[e],r++);return new Uint8Array(n.buffer,0,r)}static parseSPS(e){let t=q._ebsp2rbsp(e),i=new Y(t);i.readByte();let n=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=q.getProfileString(n),a=q.getLevelString(r),o=1,l=420,h=[0,420,422,444],u=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(l=h[o]),u=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(A=t[e-1],S=n[e-1]):255===e&&(A=i.readByte()<<8|i.readByte(),S=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),w=t,R=2*e,b=w/R}}let D=1;1===A&&1===S||(D=A/S);let k=0,L=0;if(0===o)k=1,L=2-m;else{k=3===o?1:2,L=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(_+1)*(2-m);T-=(p+g)*k,C-=(y+v)*L;let M=Math.ceil(T*D);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:u,ref_frames:c,chroma_format:l,chroma_format_string:q.getChromaFormatString(l),frame_rate:{fixed:E,fps:b,fps_den:R,fps_num:w},sar_ratio:{width:A,height:S},codec_size:{width:T,height:C},present_size:{width:M,height:C}}}static _skipScalingList(e,t){let i=8,n=8,r=0;for(let s=0;s>>2!=0,r=0!=(1&t[4]),s=(a=t)[o=5]<<24|a[o+1]<<16|a[o+2]<<8|a[o+3];var a,o;return s<9?i:{match:!0,consumed:s,dataOffset:s,hasAudioTrack:n,hasVideoTrack:r}}bindDataSource(e){return e.onDataArrival=this.parseChunks.bind(this),this}get onTrackMetadata(){return this._onTrackMetadata}set onTrackMetadata(e){this._onTrackMetadata=e}get onMediaInfo(){return this._onMediaInfo}set onMediaInfo(e){this._onMediaInfo=e}get onMetaDataArrived(){return this._onMetaDataArrived}set onMetaDataArrived(e){this._onMetaDataArrived=e}get onScriptDataArrived(){return this._onScriptDataArrived}set onScriptDataArrived(e){this._onScriptDataArrived=e}get onError(){return this._onError}set onError(e){this._onError=e}get onDataAvailable(){return this._onDataAvailable}set onDataAvailable(e){this._onDataAvailable=e}get timestampBase(){return this._timestampBase}set timestampBase(e){this._timestampBase=e}get overridedDuration(){return this._duration}set overridedDuration(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}set overridedHasAudio(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}set overridedHasVideo(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}resetMediaInfo(){this._mediaInfo=new B}_isInitialMetadataDispatched(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched}parseChunks(e,t){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new f("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");let i=0,n=this._littleEndian;if(0===t){if(!(e.byteLength>13))return 0;i=G.probe(e).dataOffset}if(this._firstParse){this._firstParse=!1,t+i!==this._dataOffset&&u.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==new DataView(e,i).getUint32(0,!n)&&u.w(this.TAG,"PrevTagSize0 !== 0 !!!"),i+=4}for(;ie.byteLength)break;let s=r.getUint8(0),a=16777215&r.getUint32(0,!n);if(i+11+a+4>e.byteLength)break;if(8!==s&&9!==s&&18!==s){u.w(this.TAG,`Unsupported tag type ${s}, skipped`),i+=11+a+4;continue}let o=r.getUint8(4),l=r.getUint8(5),h=r.getUint8(6)|l<<8|o<<16|r.getUint8(7)<<24;0!==(16777215&r.getUint32(7,!n))&&u.w(this.TAG,"Meet tag which has StreamID != 0!");let d=i+11;switch(s){case 8:this._parseAudioData(e,d,a,h);break;case 9:this._parseVideoData(e,d,a,h,t+i);break;case 18:this._parseScriptData(e,d,a)}let c=r.getUint32(11+a,!n);c!==11+a&&u.w(this.TAG,"Invalid PrevTagSize "+c),i+=11+a+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),i}_parseScriptData(e,t,i){let n=V.parseScriptData(e,t,i);if(n.hasOwnProperty("onMetaData")){if(null==n.onMetaData||"object"!=typeof n.onMetaData)return void u.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&u.w(this.TAG,"Found another onMetaData tag!"),this._metadata=n;let e=this._metadata.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},e)),"boolean"==typeof e.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=e.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof e.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=e.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof e.audiodatarate&&(this._mediaInfo.audioDataRate=e.audiodatarate),"number"==typeof e.videodatarate&&(this._mediaInfo.videoDataRate=e.videodatarate),"number"==typeof e.width&&(this._mediaInfo.width=e.width),"number"==typeof e.height&&(this._mediaInfo.height=e.height),"number"==typeof e.duration){if(!this._durationOverrided){let t=Math.floor(e.duration*this._timescale);this._duration=t,this._mediaInfo.duration=t}}else this._mediaInfo.duration=0;if("number"==typeof e.framerate){let t=Math.floor(1e3*e.framerate);if(t>0){let e=t/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=e,this._referenceFrameRate.fps_num=t,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=e}}if("object"==typeof e.keyframes){this._mediaInfo.hasKeyframesIndex=!0;let t=e.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(t),e.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=e,u.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},n))}_parseKeyframesIndex(e){let t=[],i=[];for(let n=1;n>>4;if(2!==s&&10!==s)return void this._onError(W.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+s);let a=0,o=(12&r)>>>2;if(!(o>=0&&o<=4))return void this._onError(W.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+o);a=this._flvSoundRateTable[o];let l=1&r,h=this._audioMetadata,d=this._audioTrack;if(h||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),h=this._audioMetadata={},h.type="audio",h.id=d.id,h.timescale=this._timescale,h.duration=this._duration,h.audioSampleRate=a,h.channelCount=0===l?1:2),10===s){let r=this._parseAACAudioData(e,t+1,i-1);if(null==r)return;if(0===r.packetType){h.config&&u.w(this.TAG,"Found another AudioSpecificConfig!");let e=r.data;h.audioSampleRate=e.samplingRate,h.channelCount=e.channelCount,h.codec=e.codec,h.originalCodec=e.originalCodec,h.config=e.config,h.refSampleDuration=1024/h.audioSampleRate*h.timescale,u.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",h);let t=this._mediaInfo;t.audioCodec=h.originalCodec,t.audioSampleRate=h.audioSampleRate,t.audioChannelCount=h.channelCount,t.hasVideo?null!=t.videoCodec&&(t.mimeType='video/x-flv; codecs="'+t.videoCodec+","+t.audioCodec+'"'):t.mimeType='video/x-flv; codecs="'+t.audioCodec+'"',t.isComplete()&&this._onMediaInfo(t)}else if(1===r.packetType){let e=this._timestampBase+n,t={unit:r.data,length:r.data.byteLength,dts:e,pts:e};d.samples.push(t),d.length+=r.data.length}else u.e(this.TAG,"Flv: Unsupported AAC data type "+r.packetType)}else if(2===s){if(!h.codec){let n=this._parseMP3AudioData(e,t+1,i-1,!0);if(null==n)return;h.audioSampleRate=n.samplingRate,h.channelCount=n.channelCount,h.codec=n.codec,h.originalCodec=n.originalCodec,h.refSampleDuration=1152/h.audioSampleRate*h.timescale,u.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",h);let r=this._mediaInfo;r.audioCodec=h.codec,r.audioSampleRate=h.audioSampleRate,r.audioChannelCount=h.channelCount,r.audioDataRate=n.bitRate,r.hasVideo?null!=r.videoCodec&&(r.mimeType='video/x-flv; codecs="'+r.videoCodec+","+r.audioCodec+'"'):r.mimeType='video/x-flv; codecs="'+r.audioCodec+'"',r.isComplete()&&this._onMediaInfo(r)}let r=this._parseMP3AudioData(e,t+1,i-1,!1);if(null==r)return;let s=this._timestampBase+n,a={unit:r,length:r.byteLength,dts:s,pts:s};d.samples.push(a),d.length+=r.length}}_parseAACAudioData(e,t,i){if(i<=1)return void u.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");let n={},r=new Uint8Array(e,t,i);return n.packetType=r[0],0===r[0]?n.data=this._parseAACAudioSpecificConfig(e,t+1,i-1):n.data=r.subarray(1),n}_parseAACAudioSpecificConfig(e,t,i){let n=new Uint8Array(e,t,i),r=null,s=0,a=0,o=null,l=0,h=null;if(s=a=n[0]>>>3,l=(7&n[0])<<1|n[1]>>>7,l<0||l>=this._mpegSamplingRates.length)return void this._onError(W.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");let u=this._mpegSamplingRates[l],d=(120&n[1])>>>3;if(d<0||d>=8)return void this._onError(W.FORMAT_ERROR,"Flv: AAC invalid channel configuration");5===s&&(h=(7&n[1])<<1|n[2]>>>7,o=(124&n[2])>>>2);let c=self.navigator.userAgent.toLowerCase();return-1!==c.indexOf("firefox")?l>=6?(s=5,r=new Array(4),h=l-3):(s=2,r=new Array(2),h=l):-1!==c.indexOf("android")?(s=2,r=new Array(2),h=l):(s=5,h=l,r=new Array(4),l>=6?h=l-3:1===d&&(s=2,r=new Array(2),h=l)),r[0]=s<<3,r[0]|=(15&l)>>>1,r[1]=(15&l)<<7,r[1]|=(15&d)<<3,5===s&&(r[1]|=(15&h)>>>1,r[2]=(1&h)<<7,r[2]|=8,r[3]=0),{config:r,samplingRate:u,channelCount:d,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+a}}_parseMP3AudioData(e,t,i,n){if(i<4)return void u.w(this.TAG,"Flv: Invalid MP3 packet, header missing!");this._littleEndian;let r=new Uint8Array(e,t,i),s=null;if(n){if(255!==r[0])return;let e=r[1]>>>3&3,t=(6&r[1])>>1,i=(240&r[2])>>>4,n=(12&r[2])>>>2,a=3!==(r[3]>>>6&3)?2:1,o=0,l=0,h=34,u="mp3";switch(e){case 0:o=this._mpegAudioV25SampleRateTable[n];break;case 2:o=this._mpegAudioV20SampleRateTable[n];break;case 3:o=this._mpegAudioV10SampleRateTable[n]}switch(t){case 1:h=34,i>>4,o=15&s;7===o?this._parseAVCVideoPacket(e,t+1,i-1,n,r,a):this._onError(W.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+o)}_parseAVCVideoPacket(e,t,i,n,r,s){if(i<4)return void u.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");let a=this._littleEndian,o=new DataView(e,t,i),l=o.getUint8(0),h=(16777215&o.getUint32(0,!a))<<8>>8;if(0===l)this._parseAVCDecoderConfigurationRecord(e,t+4,i-4);else if(1===l)this._parseAVCVideoData(e,t+4,i-4,n,r,s,h);else if(2!==l)return void this._onError(W.FORMAT_ERROR,"Flv: Invalid video packet type "+l)}_parseAVCDecoderConfigurationRecord(e,t,i){if(i<7)return void u.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");let n=this._videoMetadata,r=this._videoTrack,s=this._littleEndian,a=new DataView(e,t,i);n?void 0!==n.avcc&&u.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),n=this._videoMetadata={},n.type="video",n.id=r.id,n.timescale=this._timescale,n.duration=this._duration);let o=a.getUint8(0),l=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1!==o||0===l)return void this._onError(W.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");if(this._naluLengthSize=1+(3&a.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)return void this._onError(W.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));let h=31&a.getUint8(5);if(0===h)return void this._onError(W.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");h>1&&u.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+h);let d=6;for(let i=0;i1&&u.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+c),d++;for(let e=0;e=i){u.w(this.TAG,`Malformed Nalu near timestamp ${_}, offset = ${c}, dataSize = ${i}`);break}let n=l.getUint32(c,!o);if(3===f&&(n>>>=8),n>i-f)return void u.w(this.TAG,`Malformed Nalus near timestamp ${_}, NaluSize > DataSize!`);let r=31&l.getUint8(c+f);5===r&&(m=!0);let s=new Uint8Array(e,t+c,f+n),a={type:r,data:s};h.push(a),d+=s.byteLength,c+=f+n}if(h.length){let e=this._videoTrack,t={units:h,length:d,isKeyframe:m,dts:_,cts:a,pts:_+a};m&&(t.fileposition=r),e.samples.push(t),e.length+=d}}}var z=G;class H{static init(){H.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]};for(let e in H.types)H.types.hasOwnProperty(e)&&(H.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=H.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,n=Array.prototype.slice.call(arguments,1),r=n.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return H.box(H.types.trak,H.tkhd(e),H.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,n=e.presentWidth,r=e.presentHeight;return H.box(H.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,255&n,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return H.box(H.types.mdia,H.mdhd(e),H.hdlr(e),H.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return H.box(H.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?H.constants.HDLR_AUDIO:H.constants.HDLR_VIDEO,H.box(H.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?H.box(H.types.smhd,H.constants.SMHD):H.box(H.types.vmhd,H.constants.VMHD),H.box(H.types.minf,t,H.dinf(),H.stbl(e))}static dinf(){return H.box(H.types.dinf,H.box(H.types.dref,H.constants.DREF))}static stbl(e){return H.box(H.types.stbl,H.stsd(e),H.box(H.types.stts,H.constants.STTS),H.box(H.types.stsc,H.constants.STSC),H.box(H.types.stsz,H.constants.STSZ),H.box(H.types.stco,H.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.codec?H.box(H.types.stsd,H.constants.STSD_PREFIX,H.mp3(e)):H.box(H.types.stsd,H.constants.STSD_PREFIX,H.mp4a(e)):H.box(H.types.stsd,H.constants.STSD_PREFIX,H.avc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return H.box(H.types[".mp3"],n)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return H.box(H.types.mp4a,n,H.esds(e))}static esds(e){let t=e.config||[],i=t.length,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return H.box(H.types.esds,n)}static avc1(e){let t=e.avcc,i=e.codecWidth,n=e.codecHeight,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return H.box(H.types.avc1,r,H.box(H.types.avcC,t))}static mvex(e){return H.box(H.types.mvex,H.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return H.box(H.types.trex,i)}static moof(e,t){return H.box(H.types.moof,H.mfhd(e.sequenceNumber),H.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return H.box(H.types.mfhd,t)}static traf(e,t){let i=e.id,n=H.box(H.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=H.box(H.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=H.sdtp(e),a=H.trun(e,s.byteLength+16+16+8+16+8+8);return H.box(H.types.traf,n,r,a,s)}static sdtp(e){let t=e.samples||[],i=t.length,n=new Uint8Array(4+i);for(let e=0;e>>24&255,n>>>16&255,n>>>8&255,255&n,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t,n>>>24&255,n>>>16&255,n>>>8&255,255&n,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return H.box(H.types.trun,s)}static mdat(e){return H.box(H.types.mdat,e)}}H.init();var K=H;var Q=class{static getSilentFrame(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null}};class X{constructor(e,t,i,n,r){this.dts=e,this.pts=t,this.duration=i,this.originalDts=n,this.isSyncPoint=r,this.fileposition=null}}class Z{constructor(){this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}appendSyncPoint(e){e.isSyncPoint=!0,this.syncPoints.push(e)}}class J{constructor(){this._list=[]}clear(){this._list=[]}appendArray(e){let t=this._list;0!==e.length&&(t.length>0&&e[0].originalDts=t[r].dts&&et[n].lastSample.originalDts&&e=t[n].lastSample.originalDts&&(n===t.length-1||n0&&(r=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,i)}getLastSegmentBefore(e){let t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}getLastSampleBefore(e){let t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null}getLastSyncPointBefore(e){let t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;for(;0===i.length&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null}}var ee=class{constructor(e){this.TAG="MP4Remuxer",this._config=e,this._isLive=!0===e.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new $("audio"),this._videoSegmentInfoList=new $("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!A.chrome||!(A.version.major<50||50===A.version.major&&A.version.build<2661)),this._fillSilentAfterSeek=A.msedge||A.msie,this._mp3UseMpegAudio=!A.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}destroy(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null}bindDataSource(e){return e.onDataAvailable=this.remux.bind(this),e.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this}get onInitSegment(){return this._onInitSegment}set onInitSegment(e){this._onInitSegment=e}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(e){this._onMediaSegment=e}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=void 0}seek(e){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()}remux(e,t){if(!this._onMediaSegment)throw new f("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(e,t),this._remuxVideo(t),this._remuxAudio(e)}_onTrackMetadataReceived(e,t){let i=null,n="mp4",r=t.codec;if("audio"===e)this._audioMeta=t,"mp3"===t.codec&&this._mp3UseMpegAudio?(n="mpeg",r="",i=new Uint8Array):i=K.generateInitSegment(t);else{if("video"!==e)return;this._videoMeta=t,i=K.generateInitSegment(t)}if(!this._onInitSegment)throw new f("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(e,{type:e,data:i.buffer,codec:r,container:`${e}/${n}`,mediaDuration:t.duration})}_calculateDtsBase(e,t){this._dtsBaseInited||(e.samples&&e.samples.length&&(this._audioDtsBase=e.samples[0].dts),t.samples&&t.samples.length&&(this._videoDtsBase=t.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)}flushStashedSamples(){let e=this._videoStashedLastSample,t=this._audioStashedLastSample,i={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=e&&(i.samples.push(e),i.length=e.length);let n={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=t&&(n.samples.push(t),n.length=t.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(i,!0),this._remuxAudio(n,!0)}_remuxAudio(e,t){if(null==this._audioMeta)return;let i=e,n=i.samples,r=void 0,s=-1,a=-1,o=this._audioMeta.refSampleDuration,l="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,h=this._dtsBaseInited&&void 0===this._audioNextDts,d=!1;if(!n||0===n.length)return;if(1===n.length&&!t)return;let c=0,f=null,_=0;l?(c=0,_=i.length):(c=8,_=8+i.length);let m=null;if(n.length>1&&(m=n.pop(),_-=m.length),null!=this._audioStashedLastSample){let e=this._audioStashedLastSample;this._audioStashedLastSample=null,n.unshift(e),_+=e.length}null!=m&&(this._audioStashedLastSample=m);let p=n[0].dts-this._dtsBase;if(this._audioNextDts)r=p-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())r=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(d=!0);else{let e=this._audioSegmentInfoList.getLastSampleBefore(p);if(null!=e){let t=p-(e.originalDts+e.duration);t<=3&&(t=0),r=p-(e.dts+e.duration+t)}else r=0}if(d){let e=p-r,t=this._videoSegmentInfoList.getLastSegmentBefore(p);if(null!=t&&t.beginDts=1?g[g.length-1].duration:Math.floor(o);let d=!1,c=null;if(h>1.5*o&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!A.safari){d=!0;let e=Math.abs(h-o),t=Math.ceil(e/o),n=l+o;u.w(this.TAG,`Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: ${l+h} ms, expected: ${l+Math.round(o)} ms, delta: ${Math.round(e)} ms, generate: ${t} frames`);let r=Q.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==r&&(u.w(this.TAG,`Unable to generate silent frame for ${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`),r=i),c=[];for(let e=0;e0){let t=c[c.length-1];t.duration=e-t.dts}let t={dts:e,pts:e,cts:0,unit:r,size:r.byteLength,duration:0,originalDts:a,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};c.push(t),_+=t.size,n+=o}let s=c[c.length-1];s.duration=l+h-s.dts,h=Math.round(o)}g.push({dts:l,pts:l,cts:0,unit:t.unit,size:t.unit.byteLength,duration:h,originalDts:a,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),d&&g.push.apply(g,c)}l?f=new Uint8Array(_):(f=new Uint8Array(_),f[0]=_>>>24&255,f[1]=_>>>16&255,f[2]=_>>>8&255,f[3]=255&_,f.set(K.types.mdat,4));for(let e=0;e1&&(c=n.pop(),d-=c.length),null!=this._videoStashedLastSample){let e=this._videoStashedLastSample;this._videoStashedLastSample=null,n.unshift(e),d+=e.length}null!=c&&(this._videoStashedLastSample=c);let f=n[0].dts-this._dtsBase;if(this._videoNextDts)r=f-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())r=0;else{let e=this._videoSegmentInfoList.getLastSampleBefore(f);if(null!=e){let t=f-(e.originalDts+e.duration);t<=3&&(t=0),r=f-(e.dts+e.duration+t)}else r=0}let _=new Z,m=[];for(let e=0;e=1?m[m.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(a){let e=new X(l,u,d,t.dts,!0);e.fileposition=t.fileposition,_.appendSyncPoint(e)}m.push({dts:l,pts:u,cts:h,units:t.units,size:t.length,isKeyframe:a,duration:d,originalDts:i,flags:{isLeading:0,dependsOn:a?2:1,isDependedOn:a?1:0,hasRedundancy:0,isNonSync:a?0:1}})}u=new Uint8Array(d),u[0]=d>>>24&255,u[1]=d>>>16&255,u[2]=d>>>8&255,u[3]=255&d,u.set(K.types.mdat,4);for(let e=0;e{n.timestampBase=i,i+=n.duration,n.cors=e.cors,n.withCredentials=e.withCredentials,t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy)}),isNaN(i)||this._mediaDataSource.duration===i||(this._mediaDataSource.duration=i),this._mediaInfo=null,this._demuxer=null,this._remuxer=null,this._ioctl=null,this._pendingSeekTime=null,this._pendingResolveSeekPoint=null,this._statisticsReporter=null}destroy(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._emitter.removeAllListeners(),this._emitter=null}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}start(){this._loadSegment(0),this._enableStatisticsReporter()}_loadSegment(e,t){this._currentSegmentIndex=e;let i=this._mediaDataSource.segments[e],n=this._ioctl=new k(i,this._config,e);n.onError=this._onIOException.bind(this),n.onSeeked=this._onIOSeeked.bind(this),n.onComplete=this._onIOComplete.bind(this),n.onRedirect=this._onIORedirect.bind(this),n.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):n.onDataArrival=this._onInitChunkArrival.bind(this),n.open(t)}stop(){this._internalAbort(),this._disableStatisticsReporter()}_internalAbort(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}pause(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}resume(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}seek(e){if(null==this._mediaInfo||!this._mediaInfo.isSeekable())return;let t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){let i=this._mediaInfo.segments[t];if(null==i)this._pendingSeekTime=e;else{let t=i.getNearestKeyframe(e);this._remuxer.seek(t.milliseconds),this._ioctl.seek(t.fileposition),this._pendingResolveSeekPoint=t.milliseconds}}else{let i=this._mediaInfo.segments[t];if(null==i)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.seek(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{let n=i.getNearestKeyframe(e);this._internalAbort(),this._remuxer.seek(e),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,n.fileposition),this._pendingResolveSeekPoint=n.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}_searchSegmentIndexContains(e){let t=this._mediaDataSource.segments,i=t.length-1;for(let n=0;n0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,n=this._demuxer.parseChunks(e,t);else if((i=z.probe(e)).match){this._demuxer=new z(i,this._config),this._remuxer||(this._remuxer=new ee(this._config));let r=this._mediaDataSource;null==r.duration||isNaN(r.duration)||(this._demuxer.overridedDuration=r.duration),"boolean"==typeof r.hasAudio&&(this._demuxer.overridedHasAudio=r.hasAudio),"boolean"==typeof r.hasVideo&&(this._demuxer.overridedHasVideo=r.hasVideo),this._demuxer.timestampBase=r.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),n=this._demuxer.parseChunks(e,t)}else i=null,u.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then(()=>{this._internalAbort()}),this._emitter.emit(te.DEMUX_ERROR,W.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),n=0;return n}_onMediaInfo(e){null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,B.prototype));let t=Object.assign({},e);Object.setPrototypeOf(t,B.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=t,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then(()=>{let e=this._pendingSeekTime;this._pendingSeekTime=null,this.seek(e)})}_onMetaDataArrived(e){this._emitter.emit(te.METADATA_ARRIVED,e)}_onScriptDataArrived(e){this._emitter.emit(te.SCRIPTDATA_ARRIVED,e)}_onIOSeeked(){this._remuxer.insertDiscontinuity()}_onIOComplete(e){let t=e+1;t0&&e[0].originalDts===i&&(i=e[0].pts),this._emitter.emit(te.RECOMMEND_SEEKPOINT,i)}}_enableStatisticsReporter(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}_disableStatisticsReporter(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}_reportSegmentMediaInfo(e){let t=this._mediaInfo.segments[e],i=Object.assign({},t);i.duration=this._mediaInfo.duration,i.segmentCount=this._mediaInfo.segmentCount,delete i.segments,delete i.keyframesIndex,this._emitter.emit(te.MEDIA_INFO,i)}_reportStatisticsInfo(){let e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(te.STATISTICS_INFO,e)}};var ne=function(e){let t=null,i=function(t,i){e.postMessage({msg:"logcat_callback",data:{type:t,logcat:i}})}.bind(this);function n(t,i){let n={msg:te.INIT_SEGMENT,data:{type:t,data:i}};e.postMessage(n,[i.data])}function r(t,i){let n={msg:te.MEDIA_SEGMENT,data:{type:t,data:i}};e.postMessage(n,[i.data])}function s(){let t={msg:te.LOADING_COMPLETE};e.postMessage(t)}function o(){let t={msg:te.RECOVERED_EARLY_EOF};e.postMessage(t)}function l(t){let i={msg:te.MEDIA_INFO,data:t};e.postMessage(i)}function h(t){let i={msg:te.METADATA_ARRIVED,data:t};e.postMessage(i)}function u(t){let i={msg:te.SCRIPTDATA_ARRIVED,data:t};e.postMessage(i)}function d(t){let i={msg:te.STATISTICS_INFO,data:t};e.postMessage(i)}function c(t,i){e.postMessage({msg:te.IO_ERROR,data:{type:t,info:i}})}function f(t,i){e.postMessage({msg:te.DEMUX_ERROR,data:{type:t,info:i}})}function _(t){e.postMessage({msg:te.RECOMMEND_SEEKPOINT,data:t})}a.install(),e.addEventListener("message",(function(a){switch(a.data.cmd){case"init":t=new ie(a.data.param[0],a.data.param[1]),t.on(te.IO_ERROR,c.bind(this)),t.on(te.DEMUX_ERROR,f.bind(this)),t.on(te.INIT_SEGMENT,n.bind(this)),t.on(te.MEDIA_SEGMENT,r.bind(this)),t.on(te.LOADING_COMPLETE,s.bind(this)),t.on(te.RECOVERED_EARLY_EOF,o.bind(this)),t.on(te.MEDIA_INFO,l.bind(this)),t.on(te.METADATA_ARRIVED,h.bind(this)),t.on(te.SCRIPTDATA_ARRIVED,u.bind(this)),t.on(te.STATISTICS_INFO,d.bind(this)),t.on(te.RECOMMEND_SEEKPOINT,_.bind(this));break;case"destroy":t&&(t.destroy(),t=null),e.postMessage({msg:"destroyed"});break;case"start":t.start();break;case"stop":t.stop();break;case"seek":t.seek(a.data.param);break;case"pause":t.pause();break;case"resume":t.resume();break;case"logging_config":{let e=a.data.param;I.applyConfig(e),!0===e.enableCallback?I.addLogListener(i):I.removeLogListener(i);break}}}))};var re=class{constructor(e,t){if(this.TAG="Transmuxer",this._emitter=new l.a,t.enableWorker&&"undefined"!=typeof Worker)try{let n=i(14);this._worker=n(ne),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},I.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:I.getConfig()})}catch(i){u.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new ie(e,t)}else this._controller=new ie(e,t);if(this._controller){let e=this._controller;e.on(te.IO_ERROR,this._onIOError.bind(this)),e.on(te.DEMUX_ERROR,this._onDemuxError.bind(this)),e.on(te.INIT_SEGMENT,this._onInitSegment.bind(this)),e.on(te.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),e.on(te.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),e.on(te.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),e.on(te.MEDIA_INFO,this._onMediaInfo.bind(this)),e.on(te.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),e.on(te.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),e.on(te.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),e.on(te.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}destroy(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),I.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}hasWorker(){return null!=this._worker}open(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}close(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}seek(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)}pause(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}resume(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}_onInitSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(te.INIT_SEGMENT,e,t)})}_onMediaSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(te.MEDIA_SEGMENT,e,t)})}_onLoadingComplete(){Promise.resolve().then(()=>{this._emitter.emit(te.LOADING_COMPLETE)})}_onRecoveredEarlyEof(){Promise.resolve().then(()=>{this._emitter.emit(te.RECOVERED_EARLY_EOF)})}_onMediaInfo(e){Promise.resolve().then(()=>{this._emitter.emit(te.MEDIA_INFO,e)})}_onMetaDataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(te.METADATA_ARRIVED,e)})}_onScriptDataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(te.SCRIPTDATA_ARRIVED,e)})}_onStatisticsInfo(e){Promise.resolve().then(()=>{this._emitter.emit(te.STATISTICS_INFO,e)})}_onIOError(e,t){Promise.resolve().then(()=>{this._emitter.emit(te.IO_ERROR,e,t)})}_onDemuxError(e,t){Promise.resolve().then(()=>{this._emitter.emit(te.DEMUX_ERROR,e,t)})}_onRecommendSeekpoint(e){Promise.resolve().then(()=>{this._emitter.emit(te.RECOMMEND_SEEKPOINT,e)})}_onLoggingConfigChanged(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}_onWorkerMessage(e){let t=e.data,i=t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case te.INIT_SEGMENT:case te.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case te.LOADING_COMPLETE:case te.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case te.MEDIA_INFO:Object.setPrototypeOf(i,B.prototype),this._emitter.emit(t.msg,i);break;case te.METADATA_ARRIVED:case te.SCRIPTDATA_ARRIVED:case te.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case te.IO_ERROR:case te.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case te.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":u.emitter.emit("log",i.type,i.logcat)}}};var se={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"};var ae=class{constructor(e){this.TAG="MSEController",this._config=e,this._emitter=new l.a,this._config.isLive&&null==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new J}destroy(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){if(this._mediaSource)throw new f("MediaSource has been attached to an HTMLMediaElement!");let t=this._mediaSource=new window.MediaSource;t.addEventListener("sourceopen",this.e.onSourceOpen),t.addEventListener("sourceended",this.e.onSourceEnded),t.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),e.src=this._mediaSourceObjectURL}detachMediaElement(){if(this._mediaSource){let e=this._mediaSource;for(let t in this._sourceBuffers){let i=this._pendingSegments[t];i.splice(0,i.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;let n=this._sourceBuffers[t];if(n){if("closed"!==e.readyState){try{e.removeSourceBuffer(n)}catch(e){u.e(this.TAG,e.message)}n.removeEventListener("error",this.e.onSourceBufferError),n.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if("open"===e.readyState)try{e.endOfStream()}catch(e){u.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}appendInitSegment(e,t){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);let i=e,n=""+i.container;i.codec&&i.codec.length>0&&(n+=";codecs="+i.codec);let r=!1;if(u.v(this.TAG,"Received Initialization Segment, mimeType: "+n),this._lastInitSegments[i.type]=i,n!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])u.v(this.TAG,`Notice: ${i.type} mimeType changed, origin: ${this._mimeTypes[i.type]}, target: ${n}`);else{r=!0;try{let e=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(n);e.addEventListener("error",this.e.onSourceBufferError),e.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return u.e(this.TAG,e.message),void this._emitter.emit(se.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[i.type]=n}t||this._pendingSegments[i.type].push(i),r||this._sourceBuffers[i.type]&&!this._sourceBuffers[i.type].updating&&this._doAppendSegments(),A.safari&&"audio/mpeg"===i.container&&i.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=i.mediaDuration/1e3,this._updateMediaSourceDuration())}appendMediaSegment(e){let t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();let i=this._sourceBuffers[t.type];!i||i.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}seek(e){for(let e in this._sourceBuffers){if(!this._sourceBuffers[e])continue;let t=this._sourceBuffers[e];if("open"===this._mediaSource.readyState)try{t.abort()}catch(e){u.e(this.TAG,e.message)}this._idrList.clear();let i=this._pendingSegments[e];if(i.splice(0,i.length),"closed"!==this._mediaSource.readyState){for(let i=0;i=1&&e-t.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1}_doCleanupSourceBuffer(){let e=this._mediaElement.currentTime;for(let t in this._sourceBuffers){let i=this._sourceBuffers[t];if(i){let n=i.buffered,r=!1;for(let i=0;i=this._config.autoCleanupMaxBackwardDuration){r=!0;let i=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:s,end:i})}}else a0&&(isNaN(t)||i>t)&&(u.v(this.TAG,`Update MediaSource duration from ${t} to ${i}`),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}_doRemoveRanges(){for(let e in this._pendingRemoveRanges){if(!this._sourceBuffers[e]||this._sourceBuffers[e].updating)continue;let t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];for(;i.length&&!t.updating;){let e=i.shift();t.remove(e.start,e.end)}}}_doAppendSegments(){let e=this._pendingSegments;for(let t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){let i=e[t].shift();if(i.timestampOffset){let e=this._sourceBuffers[t].timestampOffset,n=i.timestampOffset/1e3;Math.abs(e-n)>.1&&(u.v(this.TAG,`Update MPEG audio timestampOffset from ${e} to ${n}`),this._sourceBuffers[t].timestampOffset=n),delete i.timestampOffset}if(!i.data||0===i.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(i.data),this._isBufferFull=!1,"video"===t&&i.hasOwnProperty("info")&&this._idrList.appendArray(i.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(i),22===e.code?(this._isBufferFull||this._emitter.emit(se.BUFFER_FULL),this._isBufferFull=!0):(u.e(this.TAG,e.message),this._emitter.emit(se.ERROR,{code:e.code,msg:e.message}))}}}_onSourceOpen(){if(u.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0){let e=this._pendingSourceBufferInit;for(;e.length;){let t=e.shift();this.appendInitSegment(t,!0)}}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(se.SOURCE_OPEN)}_onSourceEnded(){u.v(this.TAG,"MediaSource onSourceEnded")}_onSourceClose(){u.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))}_hasPendingSegments(){let e=this._pendingSegments;return e.video.length>0||e.audio.length>0}_hasPendingRemoveRanges(){let e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}_onSourceBufferUpdateEnd(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(se.UPDATE_END)}_onSourceBufferError(e){u.e(this.TAG,"SourceBuffer Error: "+e)}};const oe={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},le={NETWORK_EXCEPTION:g.EXCEPTION,NETWORK_STATUS_CODE_INVALID:g.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:g.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:g.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:W.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:W.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:W.CODEC_UNSUPPORTED};var he=class{constructor(e,t){if(this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new l.a,this._config=T(),"object"==typeof t&&Object.assign(this._config,t),"flv"!==e.type.toLowerCase())throw new _("FlvPlayer requires an flv MediaDataSource input!");!0===e.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=e,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;let i=A.chrome&&(A.version.major<50||50===A.version.major&&A.version.build<2661);this._alwaysSeekKeyframe=!!(i||A.msedge||A.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}destroy(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}on(e,t){e===O.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then(()=>{this._emitter.emit(O.MEDIA_INFO,this.mediaInfo)}):e===O.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then(()=>{this._emitter.emit(O.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),e.addEventListener("seeking",this.e.onvSeeking),e.addEventListener("canplay",this.e.onvCanPlay),e.addEventListener("stalled",this.e.onvStalled),e.addEventListener("progress",this.e.onvProgress),this._msectl=new ae(this._config),this._msectl.on(se.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(se.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(se.SOURCE_OPEN,()=>{this._mseSourceOpened=!0,this._hasPendingLoad&&(this._hasPendingLoad=!1,this.load())}),this._msectl.on(se.ERROR,e=>{this._emitter.emit(O.ERROR,oe.MEDIA_ERROR,le.MEDIA_MSE_ERROR,e)}),this._msectl.attachMediaElement(e),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}}detachMediaElement(){this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)}load(){if(!this._mediaElement)throw new f("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new f("FlvPlayer.load() has been called, please call unload() first!");this._hasPendingLoad||(this._config.deferLoadAfterSourceOpen&&!1===this._mseSourceOpened?this._hasPendingLoad=!0:(this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new re(this._mediaDataSource,this._config),this._transmuxer.on(te.INIT_SEGMENT,(e,t)=>{this._msectl.appendInitSegment(t)}),this._transmuxer.on(te.MEDIA_SEGMENT,(e,t)=>{if(this._msectl.appendMediaSegment(t),this._config.lazyLoad&&!this._config.isLive){let e=this._mediaElement.currentTime;t.info.endDts>=1e3*(e+this._config.lazyLoadMaxDuration)&&null==this._progressChecker&&(u.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}}),this._transmuxer.on(te.LOADING_COMPLETE,()=>{this._msectl.endOfStream(),this._emitter.emit(O.LOADING_COMPLETE)}),this._transmuxer.on(te.RECOVERED_EARLY_EOF,()=>{this._emitter.emit(O.RECOVERED_EARLY_EOF)}),this._transmuxer.on(te.IO_ERROR,(e,t)=>{this._emitter.emit(O.ERROR,oe.NETWORK_ERROR,e,t)}),this._transmuxer.on(te.DEMUX_ERROR,(e,t)=>{this._emitter.emit(O.ERROR,oe.MEDIA_ERROR,e,{code:-1,msg:t})}),this._transmuxer.on(te.MEDIA_INFO,e=>{this._mediaInfo=e,this._emitter.emit(O.MEDIA_INFO,Object.assign({},e))}),this._transmuxer.on(te.METADATA_ARRIVED,e=>{this._emitter.emit(O.METADATA_ARRIVED,e)}),this._transmuxer.on(te.SCRIPTDATA_ARRIVED,e=>{this._emitter.emit(O.SCRIPTDATA_ARRIVED,e)}),this._transmuxer.on(te.STATISTICS_INFO,e=>{this._statisticsInfo=this._fillStatisticsInfo(e),this._emitter.emit(O.STATISTICS_INFO,Object.assign({},this._statisticsInfo))}),this._transmuxer.on(te.RECOMMEND_SEEKPOINT,e=>{this._mediaElement&&!this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e/1e3)}),this._transmuxer.open()))}unload(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(e){this._mediaElement.volume=e}get muted(){return this._mediaElement.muted}set muted(e){this._mediaElement.muted=e}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(e){this._mediaElement?this._internalSeek(e):this._pendingSeekTime=e}get mediaInfo(){return Object.assign({},this._mediaInfo)}get statisticsInfo(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)}_fillStatisticsInfo(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){let e=this._mediaElement.getVideoPlaybackQuality();i=e.totalVideoFrames,n=e.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}_onmseUpdateEnd(){if(!this._config.lazyLoad||this._config.isLive)return;let e=this._mediaElement.buffered,t=this._mediaElement.currentTime,i=0,n=0;for(let r=0;r=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(u.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}_onmseBufferFull(){u.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()}_suspendTransmuxer(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}_checkProgressAndResume(){let e=this._mediaElement.currentTime,t=this._mediaElement.buffered,i=!1;for(let n=0;n=r&&e=s-this._config.lazyLoadRecoverDuration&&(i=!0);break}}i&&(window.clearInterval(this._progressChecker),this._progressChecker=null,i&&(u.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}_isTimepointBuffered(e){let t=this._mediaElement.buffered;for(let i=0;i=n&&e0){let t=this._mediaElement.buffered.start(0);(t<1&&e0&&t.currentTime0){let e=i.start(0);if(e<1&&t{this._emitter.emit(O.MEDIA_INFO,this.mediaInfo)}):e===O.STATISTICS_INFO&&null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then(()=>{this._emitter.emit(O.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}}detachMediaElement(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}load(){if(!this._mediaElement)throw new f("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}unload(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(e){this._mediaElement.volume=e}get muted(){return this._mediaElement.muted}set muted(e){this._mediaElement.muted=e}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}get mediaInfo(){let e={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(e.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(e.width=this._mediaElement.videoWidth,e.height=this._mediaElement.videoHeight)),e}get statisticsInfo(){let e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){let e=this._mediaElement.getVideoPlaybackQuality();i=e.totalVideoFrames,n=e.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}_onvLoadedMetadata(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(O.MEDIA_INFO,this.mediaInfo)}_reportStatisticsInfo(){this._emitter.emit(O.STATISTICS_INFO,this.statisticsInfo)}};a.install();let de={createPlayer:function(e,t){let i=e;if(null==i||"object"!=typeof i)throw new _("MediaDataSource must be an javascript object!");if(!i.hasOwnProperty("type"))throw new _("MediaDataSource must has type field to indicate video file type!");switch(i.type){case"flv":return new he(i,t);default:return new ue(i,t)}},isSupported:function(){return M.supportMSEH264Playback()},getFeatureList:function(){return M.getFeatureList()}};de.BaseLoader=y,de.LoaderStatus=p,de.LoaderErrors=g,de.Events=O,de.ErrorTypes=oe,de.ErrorDetails=le,de.FlvPlayer=he,de.NativePlayer=ue,de.LoggingControl=I,Object.defineProperty(de,"version",{enumerable:!0,get:function(){return"__VERSION__"}});var ce=de,fe=i(2),_e=i.n(fe),me=i(5),pe={insert:"head",singleton:!1};_e()(me.a,pe),me.a.locals;function ge(e){return(ge="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ye(e,t){for(var i=0;i0?i:null}}],(i=[{key:"shouldComponentUpdate",value:function(e){return this.props.serviceData.length!==e.serviceData}},{key:"componentDidMount",value:function(){var e=this;this.init(),window.addEventListener("resize",(function(){e.init()}))}},{key:"init",value:function(){this.setCanvasSize()}},{key:"setCanvasSize",value:function(){var e=this.state.id,t=document.getElementById(e).parentNode,i=t.offsetWidth,n=t.offsetHeight;this.setData({width:i+"px",height:n+"px"})}},{key:"draw",value:function(){var e=this.state,t=e.id,i=e.serviceData,n=e.width,r=e.height,s=e.mode,a=e.disabled,o=document.getElementById(t).getContext("2d");o.clearRect(0,0,parseFloat(n),parseFloat(r)),this.drawLine(o,i),this.drawCircleAll(o,i),this.drawWriting(o,i),"false"===a&&("click"===s?this.isontouchend()?this.touchMove():this.clickMove():this.isontouchend()?this.touchMove():this.mouseMove())}},{key:"isontouchend",value:function(){return"ontouchend"in document}},{key:"drawCircleAll",value:function(e,t){for(var i=0;ih&&(h=parseFloat(t[d][0])),parseFloat(t[d][1])0?i:null}}],(i=[{key:"componentDidMount",value:function(){var e=this.state.mode;"react"===e?this.setReact():this.setPolygon()}},{key:"isNull",value:function(){var e=this.state.id,t=document.getElementById(this[e].state.id),i=document.createElement("canvas");return i.width=t.width,i.height=t.height,t.toDataURL()==i.toDataURL()}},{key:"setReact",value:function(){var e=this,t=this.state.id;this.count=0;var i=document.getElementById(this[t].state.id),n=function(i){var n=e.state.serviceData,r=i.layerX,s=i.layerY;if(0===e.count)n[1][1]=s,n[2]=[r,s],n[3][0]=r;else if(e[t].selectedIndex||0===e[t].selectedIndex){switch(n[e[t].selectedIndex]=[r,s],e[t].selectedIndex){case 0:n[1][0]=r,n[3][1]=s;break;case 1:n[0][0]=r,n[2][1]=s;break;case 2:n[1][1]=s,n[3][0]=r;break;case 3:n[0][1]=s,n[2][0]=r}e.props.change(n)}e.setState({serviceData:n},(function(){e[t].draw()}))};i.addEventListener("mousedown",(function(r){if(2!==r.button){var s=r.layerX,a=r.layerY,o=[s,a];if(0===e.state.serviceData.length){e.count++;var l=[[].concat(o),[].concat(o),[].concat(o),[].concat(o)];e.setState({serviceData:l},(function(){e[t].draw()})),i.addEventListener("mousemove",n)}else e[t].selectBox(s,a)&&(e.count++,i.addEventListener("mousemove",n))}})),i.addEventListener("mouseup",(function(e){i.removeEventListener("mousemove",n)})),i.oncontextmenu=function(e){e.preventDefault()}}},{key:"setPolygon",value:function(){var e=this,t=this.state.id;this.state.serviceData.length>1?this.serviceDataFlag=!0:this.polygonCount=0;var i=document.getElementById(this[t].state.id),n=function(i){var n=i.layerX,r=i.layerY,s=e.state.serviceData;s.push([n,r]),e.setState({serviceData:s},(function(){e[t].draw()}))};this.serviceDataFlag||i.addEventListener("click",n),i.oncontextmenu=function(t){t.preventDefault(),2===t.button&&(0==e.polygonCount&&(e.polygonCount++,e.sendFather(e.state.serviceData)),i.removeEventListener("click",n))}}},{key:"isInPolygon",value:function(e,t,i){var n,r,s,a=0,o=t.length;r=t[0];for(var l=1;l<=o;l++)s=t[l%o],e[0]>Math.min(r[0],s[0])&&e[0]<=Math.max(r[0],s[0])&&e[1]<=Math.max(r[1],s[1])&&r[0]!=s[0]&&(n=(e[0]-r[0])*(s[1]-r[1])/(s[0]-r[0])+r[1],(r[1]==s[1]||e[1]<=n)&&a++),r=s;return a%2!=0||!!i.selectBox(e[0],e[1])}},{key:"change",value:function(e){this.sendFather(e)}},{key:"sendFather",value:function(e){"true"!==this.state.disabled&&this.props.change(e)}},{key:"render",value:function(){var e=this,t=this.state,i=t.serviceData,n=t.disabled,s=t.circleRadius,a=t.circleBorderWidth,o=t.circleBorderColor,l=t.circleInColor,h=t.circleSelectColor,u=t.lineColor,d=t.lineWidth,c=t.areaColor,f=t.title,_=t.titleColor,m=t.titleFont,p=t.titleLineHeight,g=t.position,y=t.id;return r.a.createElement(Qe,{serviceData:i,disabled:n,circleRadius:s,circleBorderWidth:a,circleBorderColor:o,circleSelectColor:h,circleInColor:l,lineColor:u,lineWidth:d,areaColor:c,title:f,titleColor:_,titleFont:m,titleLineHeight:p,position:g,ref:function(t){e[y]=t},change:function(t){return e.change(t)}})}}])&&Je(t.prototype,i),n&&Je(t,n),a}(n.Component);function rt(e){return(rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function st(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function at(e,t){for(var i=0;i0?i:null}}],(i=[{key:"componentDidMount",value:function(){var e=this.props.list;e&&e.length>0&&(this.selectIndex=e[e.length-1].id),this.selectArea()}},{key:"clickIt",value:function(e){var t=this.props.list,i=(new Date).getTime();t&&0!==t.length?this[t[t.length-1].id+t[t.length-1].mode].isNull()?this.props.err(!1,"画布为空,请先绘制在添加。"):t[t.length-1].serviceData?(t.push({id:i,mode:e}),this.selectIndex=i):this.props.err(!1,"画布没有保存,请先绘制完成在添加"):((t=[]).push({id:i,mode:e}),this.selectIndex=i),this.props.change(t)}},{key:"delete",value:function(){this.props.delete(this.selectIndex,"发出删除指令")}},{key:"change",value:function(e){var t=this,i=this.props.list;i=i.map((function(i){return i.id===t.selectIndex&&(i.serviceData=JSON.parse(JSON.stringify(e))),i})),this.props.change(i)}},{key:"selectArea",value:function(){var e=this,t=this.state.id;document.getElementById(t).onclick=function(t){var i=e.props.list,n=t.layerX,r=t.layerY;if(e.indexflag=!1,i)for(var s=0;sr!=d>r&&n<(u-l)*(r-h)/(d-h)+l;c&&(s=!s)}return!(c||!i.selectBox(e[0],e[1]))||s}},{key:"render",value:function(){var e=this,t=this.state,i=t.id,n=t.disabled,s=t.circleRadius,a=t.circleBorderWidth,o=t.circleBorderColor,l=t.circleInColor,h=t.circleSelectColor,u=t.lineColor,d=t.lineWidth,c=t.areaColor,f=t.title,_=t.titleColor,m=t.titleFont,p=t.titleLineHeight,g=t.position,y=this.props.list;return r.a.createElement("div",{id:i,style:{width:"100%",height:"100%",position:"relative"}},r.a.createElement("button",{style:{position:"absolute",right:"-70px",top:"0"},onClick:function(){return e.clickIt("react")}},"添加矩形"),r.a.createElement("button",{style:{position:"absolute",right:"-83px",top:"40px"},onClick:function(){return e.clickIt("polygon")}},"添加多边形"),r.a.createElement("button",{style:{position:"absolute",right:"-43px",top:"80px"},onClick:function(){return e.delete()}},"删除"),y&&y.map((function(t,i){return r.a.createElement(nt,{disabled:n,circleRadius:s,circleBorderWidth:a,circleBorderColor:o,circleSelectColor:h,circleInColor:l,lineColor:u,lineWidth:d,areaColor:c,title:f,titleColor:_,titleFont:m,titleLineHeight:p,position:g,key:t.id,serviceData:t.serviceData,ref:function(i){e[t.id+t.mode]=i},mode:t.mode,change:function(t){return e.change(t)}})})))}}])&&at(t.prototype,i),n&&at(t,n),a}(n.Component);console.log("%c中科视语-组件库"," text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);font-size:35px")}])})); \ No newline at end of file + */var i;i=function(){"use strict";function A(A){return"function"==typeof A}var i=Array.isArray?Array.isArray:function(A){return"[object Array]"===Object.prototype.toString.call(A)},n=0,r=void 0,s=void 0,a=function(A,e){f[n]=A,f[n+1]=e,2===(n+=2)&&(s?s(m):y())},o="undefined"!=typeof window?window:void 0,l=o||{},u=l.MutationObserver||l.WebKitMutationObserver,d="undefined"==typeof self&&void 0!==e&&"[object process]"==={}.toString.call(e),h="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function c(){var A=setTimeout;return function(){return A(m,1)}}var f=new Array(1e3);function m(){for(var A=0;A1)for(var t=1;t ${e}`;l.ENABLE_CALLBACK&&l.emitter.emit("log","error",t),l.ENABLE_ERROR&&(console.error?console.error(t):console.warn?console.warn(t):console.log(t))}static i(A,e){A&&!l.FORCE_GLOBAL_TAG||(A=l.GLOBAL_TAG);let t=`[${A}] > ${e}`;l.ENABLE_CALLBACK&&l.emitter.emit("log","info",t),l.ENABLE_INFO&&(console.info?console.info(t):console.log(t))}static w(A,e){A&&!l.FORCE_GLOBAL_TAG||(A=l.GLOBAL_TAG);let t=`[${A}] > ${e}`;l.ENABLE_CALLBACK&&l.emitter.emit("log","warn",t),l.ENABLE_WARN&&(console.warn?console.warn(t):console.log(t))}static d(A,e){A&&!l.FORCE_GLOBAL_TAG||(A=l.GLOBAL_TAG);let t=`[${A}] > ${e}`;l.ENABLE_CALLBACK&&l.emitter.emit("log","debug",t),l.ENABLE_DEBUG&&(console.debug?console.debug(t):console.log(t))}static v(A,e){A&&!l.FORCE_GLOBAL_TAG||(A=l.GLOBAL_TAG);let t=`[${A}] > ${e}`;l.ENABLE_CALLBACK&&l.emitter.emit("log","verbose",t),l.ENABLE_VERBOSE&&console.log(t)}}l.GLOBAL_TAG="flv.js",l.FORCE_GLOBAL_TAG=!1,l.ENABLE_ERROR=!0,l.ENABLE_INFO=!0,l.ENABLE_WARN=!0,l.ENABLE_DEBUG=!0,l.ENABLE_VERBOSE=!0,l.ENABLE_CALLBACK=!1,l.emitter=new o.a;var u=l;var d=class{constructor(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}reset(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0}addBytes(A){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=A,this._totalBytes+=A):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=A,this._totalBytes+=A):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=A,this._totalBytes+=A,this._lastCheckpoint=this._now())}get currentKBps(){this.addBytes(0);let A=(this._now()-this._lastCheckpoint)/1e3;return 0==A&&(A=1),this._intervalBytes/A/1024}get lastSecondKBps(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}get averageKBps(){let A=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/A/1024}};class h{constructor(A){this._message=A}get name(){return"RuntimeException"}get message(){return this._message}toString(){return this.name+": "+this.message}}class c extends h{constructor(A){super(A)}get name(){return"IllegalStateException"}}class f extends h{constructor(A){super(A)}get name(){return"InvalidArgumentException"}}class m extends h{constructor(A){super(A)}get name(){return"NotImplementedException"}}const g={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},p={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"};class v{constructor(A){this._type=A||"undefined",this._status=g.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}destroy(){this._status=g.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}isWorking(){return this._status===g.kConnecting||this._status===g.kBuffering}get type(){return this._type}get status(){return this._status}get needStashBuffer(){return this._needStash}get onContentLengthKnown(){return this._onContentLengthKnown}set onContentLengthKnown(A){this._onContentLengthKnown=A}get onURLRedirect(){return this._onURLRedirect}set onURLRedirect(A){this._onURLRedirect=A}get onDataArrival(){return this._onDataArrival}set onDataArrival(A){this._onDataArrival=A}get onError(){return this._onError}set onError(A){this._onError=A}get onComplete(){return this._onComplete}set onComplete(A){this._onComplete=A}open(A,e){throw new m("Unimplemented abstract function!")}abort(){throw new m("Unimplemented abstract function!")}}let _={};!function(){let A=self.navigator.userAgent.toLowerCase(),e=/(edge)\/([\w.]+)/.exec(A)||/(opr)[\/]([\w.]+)/.exec(A)||/(chrome)[ \/]([\w.]+)/.exec(A)||/(iemobile)[\/]([\w.]+)/.exec(A)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(A)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(A)||/(webkit)[ \/]([\w.]+)/.exec(A)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(A)||/(msie) ([\w.]+)/.exec(A)||A.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(A)||A.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(A)||[],t=/(ipad)/.exec(A)||/(ipod)/.exec(A)||/(windows phone)/.exec(A)||/(iphone)/.exec(A)||/(kindle)/.exec(A)||/(android)/.exec(A)||/(windows)/.exec(A)||/(mac)/.exec(A)||/(linux)/.exec(A)||/(cros)/.exec(A)||[],i={browser:e[5]||e[3]||e[1]||"",version:e[2]||e[4]||"0",majorVersion:e[4]||e[2]||"0",platform:t[0]||""},n={};if(i.browser){n[i.browser]=!0;let A=i.majorVersion.split(".");n.version={major:parseInt(i.majorVersion,10),string:i.version},A.length>1&&(n.version.minor=parseInt(A[1],10)),A.length>2&&(n.version.build=parseInt(A[2],10))}if(i.platform&&(n[i.platform]=!0),(n.chrome||n.opr||n.safari)&&(n.webkit=!0),n.rv||n.iemobile){n.rv&&delete n.rv;let A="msie";i.browser=A,n[A]=!0}if(n.edge){delete n.edge;let A="msedge";i.browser=A,n[A]=!0}if(n.opr){let A="opera";i.browser=A,n[A]=!0}if(n.safari&&n.android){let A="android";i.browser=A,n[A]=!0}n.name=i.browser,n.platform=i.platform;for(let A in _)_.hasOwnProperty(A)&&delete _[A];Object.assign(_,n)}();var y=_;var b=class extends v{static isSupported(){try{let A=y.msedge&&y.version.minor>=15048,e=!y.msedge||A;return self.fetch&&self.ReadableStream&&e}catch(A){return!1}}constructor(A,e){super("fetch-stream-loader"),this.TAG="FetchStreamLoader",this._seekHandler=A,this._config=e,this._needStash=!0,this._requestAbort=!1,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),super.destroy()}open(A,e){this._dataSource=A,this._range=e;let t=A.url;this._config.reuseRedirectedURL&&null!=A.redirectedURL&&(t=A.redirectedURL);let i=this._seekHandler.getConfig(t,e),n=new self.Headers;if("object"==typeof i.headers){let A=i.headers;for(let e in A)A.hasOwnProperty(e)&&n.append(e,A[e])}let r={method:"GET",headers:n,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(let A in this._config.headers)n.append(A,this._config.headers[A]);!1===A.cors&&(r.mode="same-origin"),A.withCredentials&&(r.credentials="include"),A.referrerPolicy&&(r.referrerPolicy=A.referrerPolicy),this._status=g.kConnecting,self.fetch(i.url,r).then(A=>{if(this._requestAbort)return this._requestAbort=!1,void(this._status=g.kIdle);if(A.ok&&A.status>=200&&A.status<=299){if(A.url!==i.url&&this._onURLRedirect){let e=this._seekHandler.removeURLParameters(A.url);this._onURLRedirect(e)}let e=A.headers.get("Content-Length");return null!=e&&(this._contentLength=parseInt(e),0!==this._contentLength&&this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)),this._pump.call(this,A.body.getReader())}if(this._status=g.kError,!this._onError)throw new h("FetchStreamLoader: Http code invalid, "+A.status+" "+A.statusText);this._onError(p.HTTP_STATUS_CODE_INVALID,{code:A.status,msg:A.statusText})}).catch(A=>{if(this._status=g.kError,!this._onError)throw A;this._onError(p.EXCEPTION,{code:-1,msg:A.message})})}abort(){this._requestAbort=!0}_pump(A){return A.read().then(e=>{if(e.done)if(null!==this._contentLength&&this._receivedLength{if(11===A.code&&y.msedge)return;this._status=g.kError;let e=0,t=null;if(19!==A.code&&"network error"!==A.message||!(null===this._contentLength||null!==this._contentLength&&this._receivedLength299)){if(this._status=g.kError,!this._onError)throw new h("MozChunkedLoader: Http code invalid, "+e.status+" "+e.statusText);this._onError(p.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}else this._status=g.kBuffering}}_onProgress(A){if(this._status===g.kError)return;null===this._contentLength&&null!==A.total&&0!==A.total&&(this._contentLength=A.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));let e=A.target.response,t=this._range.from+this._receivedLength;this._receivedLength+=e.byteLength,this._onDataArrival&&this._onDataArrival(e,t,this._receivedLength)}_onLoadEnd(A){!0!==this._requestAbort?this._status!==g.kError&&(this._status=g.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1}_onXhrError(A){this._status=g.kError;let e=0,t=null;if(this._contentLength&&A.loaded=this._contentLength&&(t=this._range.from+this._contentLength-1),this._currentRequestRange={from:e,to:t},this._internalOpen(this._dataSource,this._currentRequestRange)}_internalOpen(A,e){this._lastTimeLoaded=0;let t=A.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?t=this._currentRedirectedURL:null!=A.redirectedURL&&(t=A.redirectedURL));let i=this._seekHandler.getConfig(t,e);this._currentRequestURL=i.url;let n=this._xhr=new XMLHttpRequest;if(n.open("GET",i.url,!0),n.responseType="arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onload=this._onLoad.bind(this),n.onerror=this._onXhrError.bind(this),A.withCredentials&&(n.withCredentials=!0),"object"==typeof i.headers){let A=i.headers;for(let e in A)A.hasOwnProperty(e)&&n.setRequestHeader(e,A[e])}if("object"==typeof this._config.headers){let A=this._config.headers;for(let e in A)A.hasOwnProperty(e)&&n.setRequestHeader(e,A[e])}n.send()}abort(){this._requestAbort=!0,this._internalAbort(),this._status=g.kComplete}_internalAbort(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}_onReadyStateChange(A){let e=A.target;if(2===e.readyState){if(null!=e.responseURL){let A=this._seekHandler.removeURLParameters(e.responseURL);e.responseURL!==this._currentRequestURL&&A!==this._currentRedirectedURL&&(this._currentRedirectedURL=A,this._onURLRedirect&&this._onURLRedirect(A))}if(e.status>=200&&e.status<=299){if(this._waitForTotalLength)return;this._status=g.kBuffering}else{if(this._status=g.kError,!this._onError)throw new h("RangeLoader: Http code invalid, "+e.status+" "+e.statusText);this._onError(p.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}}}_onProgress(A){if(this._status===g.kError)return;if(null===this._contentLength){let e=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,e=!0;let t=A.total;this._internalAbort(),null!=t&0!==t&&(this._totalLength=t)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,e)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}let e=A.loaded-this._lastTimeLoaded;this._lastTimeLoaded=A.loaded,this._speedSampler.addBytes(e)}_normalizeSpeed(A){let e=this._chunkSizeKBList,t=e.length-1,i=0,n=0,r=t;if(A=e[i]&&A=3&&(e=this._speedSampler.currentKBps)),0!==e){let A=this._normalizeSpeed(e);this._currentSpeedNormalized!==A&&(this._currentSpeedNormalized=A,this._currentChunkSizeKB=A)}let t=A.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength;let n=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength{this._dispatchArrayBuffer(e.result)},e.readAsArrayBuffer(A.data)}else{this._status=g.kError;let e={code:-1,msg:"Unsupported WebSocket message type: "+A.data.constructor.name};if(!this._onError)throw new h(e.msg);this._onError(p.EXCEPTION,e)}}_dispatchArrayBuffer(A){let e=A,t=this._receivedLength;this._receivedLength+=e.byteLength,this._onDataArrival&&this._onDataArrival(e,t,this._receivedLength)}_onWebSocketError(A){this._status=g.kError;let e={code:A.code,msg:A.message};if(!this._onError)throw new h(e.msg);this._onError(p.EXCEPTION,e)}};var S=class{constructor(A){this._zeroStart=A||!1}getConfig(A,e){let t={};if(0!==e.from||-1!==e.to){let A;A=-1!==e.to?`bytes=${e.from.toString()}-${e.to.toString()}`:`bytes=${e.from.toString()}-`,t.Range=A}else this._zeroStart&&(t.Range="bytes=0-");return{url:A,headers:t}}removeURLParameters(A){return A}};var D=class{constructor(A,e){this._startName=A,this._endName=e}getConfig(A,e){let t=A;if(0!==e.from||-1!==e.to){let A=!0;-1===t.indexOf("?")&&(t+="?",A=!1),A&&(t+="&"),t+=`${this._startName}=${e.from.toString()}`,-1!==e.to&&(t+=`&${this._endName}=${e.to.toString()}`)}return{url:t,headers:{}}}removeURLParameters(A){let e=A.split("?")[0],t=void 0,i=A.indexOf("?");-1!==i&&(t=A.substring(i+1));let n="";if(null!=t&&t.length>0){let A=t.split("&");for(let e=0;e0;t[0]!==this._startName&&t[0]!==this._endName&&(i&&(n+="&"),n+=A[e])}}return 0===n.length?e:e+"?"+n}};var O=class{constructor(A,e,t){this.TAG="IOController",this._config=e,this._extraData=t,this._stashInitialSize=393216,null!=e.stashInitialSize&&e.stashInitialSize>0&&(this._stashInitialSize=e.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===e.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=A,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(A.url),this._refTotalLength=A.filesize?A.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new d,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}destroy(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}isWorking(){return this._loader&&this._loader.isWorking()&&!this._paused}isPaused(){return this._paused}get status(){return this._loader.status}get extraData(){return this._extraData}set extraData(A){this._extraData=A}get onDataArrival(){return this._onDataArrival}set onDataArrival(A){this._onDataArrival=A}get onSeeked(){return this._onSeeked}set onSeeked(A){this._onSeeked=A}get onError(){return this._onError}set onError(A){this._onError=A}get onComplete(){return this._onComplete}set onComplete(A){this._onComplete=A}get onRedirect(){return this._onRedirect}set onRedirect(A){this._onRedirect=A}get onRecoveredEarlyEof(){return this._onRecoveredEarlyEof}set onRecoveredEarlyEof(A){this._onRecoveredEarlyEof=A}get currentURL(){return this._dataSource.url}get hasRedirect(){return null!=this._redirectedURL||null!=this._dataSource.redirectedURL}get currentRedirectedURL(){return this._redirectedURL||this._dataSource.redirectedURL}get currentSpeed(){return this._loaderClass===w?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}get loaderType(){return this._loader.type}_selectSeekHandler(){let A=this._config;if("range"===A.seekType)this._seekHandler=new S(this._config.rangeLoadZeroStart);else if("param"===A.seekType){let e=A.seekParamStart||"bstart",t=A.seekParamEnd||"bend";this._seekHandler=new D(e,t)}else{if("custom"!==A.seekType)throw new f("Invalid seekType in config: "+A.seekType);if("function"!=typeof A.customSeekHandler)throw new f("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new A.customSeekHandler}}_selectLoader(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=R;else if(b.isSupported())this._loaderClass=b;else if(E.isSupported())this._loaderClass=E;else{if(!w.isSupported())throw new h("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=w}}_createLoader(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}open(A){this._currentRange={from:0,to:-1},A&&(this._currentRange.from=A),this._speedSampler.reset(),A||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}abort(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}pause(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}resume(){if(this._paused){this._paused=!1;let A=this._resumeFrom;this._resumeFrom=0,this._internalSeek(A,!0)}}seek(A){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(A,!0)}_internalSeek(A,e){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(e),this._loader.destroy(),this._loader=null;let t={from:A,to:-1};this._currentRange={from:t.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,t),this._onSeeked&&this._onSeeked()}updateUrl(A){if(!A||"string"!=typeof A||0===A.length)throw new f("Url must be a non-empty string!");this._dataSource.url=A}_expandBuffer(A){let e=this._stashSize;for(;e+10485760){let A=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(t,0,e).set(A,0)}this._stashBuffer=t,this._bufferSize=e}_normalizeSpeed(A){let e=this._speedNormalizeList,t=e.length-1,i=0,n=0,r=t;if(A=e[i]&&A=512&&A<=1024?Math.floor(1.5*A):2*A,e>8192&&(e=8192);let t=1024*e+1048576;this._bufferSize0){let e=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(e,this._stashByteStart);if(i0){let A=new Uint8Array(e,i);t.set(A,0),this._stashUsed=A.byteLength,this._stashByteStart+=i}}else this._stashUsed=0,this._stashByteStart+=i;this._stashUsed+A.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+A.byteLength),t=new Uint8Array(this._stashBuffer,0,this._bufferSize)),t.set(new Uint8Array(A),this._stashUsed),this._stashUsed+=A.byteLength}else{let i=this._dispatchChunks(A,e);if(ithis._bufferSize&&(this._expandBuffer(n),t=new Uint8Array(this._stashBuffer,0,this._bufferSize)),t.set(new Uint8Array(A,i),0),this._stashUsed+=n,this._stashByteStart=e+i}}}else if(0===this._stashUsed){let t=this._dispatchChunks(A,e);if(tthis._bufferSize&&this._expandBuffer(i),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(A,t),0),this._stashUsed+=i,this._stashByteStart=e+t}}else{this._stashUsed+A.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+A.byteLength);let e=new Uint8Array(this._stashBuffer,0,this._bufferSize);e.set(new Uint8Array(A),this._stashUsed),this._stashUsed+=A.byteLength;let t=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(t0){let A=new Uint8Array(this._stashBuffer,t);e.set(A,0)}this._stashUsed-=t,this._stashByteStart+=t}}_flushStashBuffer(A){if(this._stashUsed>0){let e=this._stashBuffer.slice(0,this._stashUsed),t=this._dispatchChunks(e,this._stashByteStart),i=e.byteLength-t;if(t0){let A=new Uint8Array(this._stashBuffer,0,this._bufferSize),i=new Uint8Array(e,t);A.set(i,0),this._stashUsed=i.byteLength,this._stashByteStart+=t}return 0}u.w(this.TAG,i+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,i}return 0}_onLoaderComplete(A,e){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}_onLoaderError(A,e){switch(u.e(this.TAG,`Loader error, code = ${e.code}, msg = ${e.msg}`),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,A=p.UNRECOVERABLE_EARLY_EOF),A){case p.EARLY_EOF:if(!this._config.isLive&&this._totalLength){let A=this._currentRange.to+1;return void(A0){let e=B.getConfig();A.emit("change",e)}}static registerListener(A){B.emitter.addListener("change",A)}static removeListener(A){B.emitter.removeListener("change",A)}static addLogListener(A){u.emitter.addListener("log",A),u.emitter.listenerCount("log")>0&&(u.ENABLE_CALLBACK=!0,B._notifyChange())}static removeLogListener(A){u.emitter.removeListener("log",A),0===u.emitter.listenerCount("log")&&(u.ENABLE_CALLBACK=!1,B._notifyChange())}}B.emitter=new o.a;var M=B;var I=class{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let A=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,e=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&A&&e}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(A){if(null==this.keyframesIndex)return null;let e=this.keyframesIndex,t=this._search(e.times,A);return{index:t,milliseconds:e.times[t],fileposition:e.filepositions[t]}}_search(A,e){let t=0,i=A.length-1,n=0,r=0,s=i;for(e=A[n]&&e=128){e.push(String.fromCharCode(65535&A)),i+=2;continue}}}else if(t[i]<240){if(k(t,i,2)){let A=(15&t[i])<<12|(63&t[i+1])<<6|63&t[i+2];if(A>=2048&&55296!=(63488&A)){e.push(String.fromCharCode(65535&A)),i+=3;continue}}}else if(t[i]<248&&k(t,i,3)){let A=(7&t[i])<<18|(63&t[i+1])<<12|(63&t[i+2])<<6|63&t[i+3];if(A>65536&&A<1114112){A-=65536,e.push(String.fromCharCode(A>>>10|55296)),e.push(String.fromCharCode(1023&A|56320)),i+=4;continue}}e.push(String.fromCharCode(65533)),++i}return e.join("")};let j=function(){let A=new ArrayBuffer(2);return new DataView(A).setInt16(0,256,!0),256===new Int16Array(A)[0]}();class H{static parseScriptData(A,e,t){let i={};try{let n=H.parseValue(A,e,t),r=H.parseValue(A,e+n.size,t-n.size);i[n.data]=r.data}catch(A){u.e("AMF",A.toString())}return i}static parseObject(A,e,t){if(t<3)throw new c("Data not enough when parse ScriptDataObject");let i=H.parseString(A,e,t),n=H.parseValue(A,e+i.size,t-i.size),r=n.objectEnd;return{data:{name:i.data,value:n.data},size:i.size+n.size,objectEnd:r}}static parseVariable(A,e,t){return H.parseObject(A,e,t)}static parseString(A,e,t){if(t<2)throw new c("Data not enough when parse String");let i,n=new DataView(A,e,t).getUint16(0,!j);return i=n>0?z(new Uint8Array(A,e+2,n)):"",{data:i,size:2+n}}static parseLongString(A,e,t){if(t<4)throw new c("Data not enough when parse LongString");let i,n=new DataView(A,e,t).getUint32(0,!j);return i=n>0?z(new Uint8Array(A,e+4,n)):"",{data:i,size:4+n}}static parseDate(A,e,t){if(t<10)throw new c("Data size invalid when parse Date");let i=new DataView(A,e,t),n=i.getFloat64(0,!j);return n+=60*i.getInt16(8,!j)*1e3,{data:new Date(n),size:10}}static parseValue(A,e,t){if(t<1)throw new c("Data not enough when parse Value");let i,n=new DataView(A,e,t),r=1,s=n.getUint8(0),a=!1;try{switch(s){case 0:i=n.getFloat64(1,!j),r+=8;break;case 1:i=!!n.getUint8(1),r+=1;break;case 2:{let n=H.parseString(A,e+1,t-1);i=n.data,r+=n.size;break}case 3:{i={};let s=0;for(9==(16777215&n.getUint32(t-4,!j))&&(s=3);r32)throw new f("ExpGolomb: readBits() bits exceeded max 32bits!");if(A<=this._current_word_bits_left){let e=this._current_word>>>32-A;return this._current_word<<=A,this._current_word_bits_left-=A,e}let e=this._current_word_bits_left?this._current_word:0;e>>>=32-this._current_word_bits_left;let t=A-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(t,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,e=e<>>A))return this._current_word<<=A,this._current_word_bits_left-=A,A;return this._fillCurrentWord(),A+this._skipLeadingZero()}readUEG(){let A=this._skipLeadingZero();return this.readBits(A+1)-1}readSEG(){let A=this.readUEG();return 1&A?A+1>>>1:-1*(A>>>1)}};class U{static _ebsp2rbsp(A){let e=A,t=e.byteLength,i=new Uint8Array(t),n=0;for(let A=0;A=2&&3===e[A]&&0===e[A-1]&&0===e[A-2]||(i[n]=e[A],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(A){let e=U._ebsp2rbsp(A),t=new Q(e);t.readByte();let i=t.readByte();t.readByte();let n=t.readByte();t.readUEG();let r=U.getProfileString(i),s=U.getLevelString(n),a=1,o=420,l=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(a=t.readUEG(),3===a&&t.readBits(1),a<=3&&(o=l[a]),u=t.readUEG()+8,t.readUEG(),t.readBits(1),t.readBool())){let A=3!==a?8:12;for(let e=0;e0&&A<16?(y=e[A-1],b=i[A-1]):255===A&&(y=t.readByte()<<8|t.readByte(),b=t.readByte()<<8|t.readByte())}if(t.readBool()&&t.readBool(),t.readBool()&&(t.readBits(4),t.readBool()&&t.readBits(24)),t.readBool()&&(t.readUEG(),t.readUEG()),t.readBool()){let A=t.readBits(32),e=t.readBits(32);w=t.readBool(),R=e,S=2*A,E=R/S}}let D=1;1===y&&1===b||(D=y/b);let O=0,P=0;if(0===a)O=1,P=2-m;else{O=3===a?1:2,P=(1===a?2:1)*(2-m)}let L=16*(c+1),x=16*(f+1)*(2-m);L-=(g+p)*O,x-=(v+_)*P;let C=Math.ceil(L*D);return t.destroy(),t=null,{profile_string:r,level_string:s,bit_depth:u,ref_frames:h,chroma_format:o,chroma_format_string:U.getChromaFormatString(o),frame_rate:{fixed:w,fps:E,fps_den:S,fps_num:R},sar_ratio:{width:y,height:b},codec_size:{width:L,height:x},present_size:{width:C,height:x}}}static _skipScalingList(A,e){let t=8,i=8,n=0;for(let r=0;r>>2!=0,n=0!=(1&e[4]),r=(s=e)[a=5]<<24|s[a+1]<<16|s[a+2]<<8|s[a+3];var s,a;return r<9?t:{match:!0,consumed:r,dataOffset:r,hasAudioTrack:i,hasVideoTrack:n}}bindDataSource(A){return A.onDataArrival=this.parseChunks.bind(this),this}get onTrackMetadata(){return this._onTrackMetadata}set onTrackMetadata(A){this._onTrackMetadata=A}get onMediaInfo(){return this._onMediaInfo}set onMediaInfo(A){this._onMediaInfo=A}get onMetaDataArrived(){return this._onMetaDataArrived}set onMetaDataArrived(A){this._onMetaDataArrived=A}get onScriptDataArrived(){return this._onScriptDataArrived}set onScriptDataArrived(A){this._onScriptDataArrived=A}get onError(){return this._onError}set onError(A){this._onError=A}get onDataAvailable(){return this._onDataAvailable}set onDataAvailable(A){this._onDataAvailable=A}get timestampBase(){return this._timestampBase}set timestampBase(A){this._timestampBase=A}get overridedDuration(){return this._duration}set overridedDuration(A){this._durationOverrided=!0,this._duration=A,this._mediaInfo.duration=A}set overridedHasAudio(A){this._hasAudioFlagOverrided=!0,this._hasAudio=A,this._mediaInfo.hasAudio=A}set overridedHasVideo(A){this._hasVideoFlagOverrided=!0,this._hasVideo=A,this._mediaInfo.hasVideo=A}resetMediaInfo(){this._mediaInfo=new I}_isInitialMetadataDispatched(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched}parseChunks(A,e){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new c("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");let t=0,i=this._littleEndian;if(0===e){if(!(A.byteLength>13))return 0;t=X.probe(A).dataOffset}if(this._firstParse){this._firstParse=!1,e+t!==this._dataOffset&&u.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==new DataView(A,t).getUint32(0,!i)&&u.w(this.TAG,"PrevTagSize0 !== 0 !!!"),t+=4}for(;tA.byteLength)break;let r=n.getUint8(0),s=16777215&n.getUint32(0,!i);if(t+11+s+4>A.byteLength)break;if(8!==r&&9!==r&&18!==r){u.w(this.TAG,`Unsupported tag type ${r}, skipped`),t+=11+s+4;continue}let a=n.getUint8(4),o=n.getUint8(5),l=n.getUint8(6)|o<<8|a<<16|n.getUint8(7)<<24;0!==(16777215&n.getUint32(7,!i))&&u.w(this.TAG,"Meet tag which has StreamID != 0!");let d=t+11;switch(r){case 8:this._parseAudioData(A,d,s,l);break;case 9:this._parseVideoData(A,d,s,l,e+t);break;case 18:this._parseScriptData(A,d,s)}let h=n.getUint32(11+s,!i);h!==11+s&&u.w(this.TAG,"Invalid PrevTagSize "+h),t+=11+s+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),t}_parseScriptData(A,e,t){let i=N.parseScriptData(A,e,t);if(i.hasOwnProperty("onMetaData")){if(null==i.onMetaData||"object"!=typeof i.onMetaData)return void u.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&u.w(this.TAG,"Found another onMetaData tag!"),this._metadata=i;let A=this._metadata.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},A)),"boolean"==typeof A.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=A.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof A.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=A.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof A.audiodatarate&&(this._mediaInfo.audioDataRate=A.audiodatarate),"number"==typeof A.videodatarate&&(this._mediaInfo.videoDataRate=A.videodatarate),"number"==typeof A.width&&(this._mediaInfo.width=A.width),"number"==typeof A.height&&(this._mediaInfo.height=A.height),"number"==typeof A.duration){if(!this._durationOverrided){let e=Math.floor(A.duration*this._timescale);this._duration=e,this._mediaInfo.duration=e}}else this._mediaInfo.duration=0;if("number"==typeof A.framerate){let e=Math.floor(1e3*A.framerate);if(e>0){let A=e/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=A,this._referenceFrameRate.fps_num=e,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=A}}if("object"==typeof A.keyframes){this._mediaInfo.hasKeyframesIndex=!0;let e=A.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(e),A.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=A,u.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(i).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},i))}_parseKeyframesIndex(A){let e=[],t=[];for(let i=1;i>>4;if(2!==r&&10!==r)return void this._onError(G.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+r);let s=0,a=(12&n)>>>2;if(!(a>=0&&a<=4))return void this._onError(G.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+a);s=this._flvSoundRateTable[a];let o=1&n,l=this._audioMetadata,d=this._audioTrack;if(l||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),l=this._audioMetadata={},l.type="audio",l.id=d.id,l.timescale=this._timescale,l.duration=this._duration,l.audioSampleRate=s,l.channelCount=0===o?1:2),10===r){let n=this._parseAACAudioData(A,e+1,t-1);if(null==n)return;if(0===n.packetType){l.config&&u.w(this.TAG,"Found another AudioSpecificConfig!");let A=n.data;l.audioSampleRate=A.samplingRate,l.channelCount=A.channelCount,l.codec=A.codec,l.originalCodec=A.originalCodec,l.config=A.config,l.refSampleDuration=1024/l.audioSampleRate*l.timescale,u.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",l);let e=this._mediaInfo;e.audioCodec=l.originalCodec,e.audioSampleRate=l.audioSampleRate,e.audioChannelCount=l.channelCount,e.hasVideo?null!=e.videoCodec&&(e.mimeType='video/x-flv; codecs="'+e.videoCodec+","+e.audioCodec+'"'):e.mimeType='video/x-flv; codecs="'+e.audioCodec+'"',e.isComplete()&&this._onMediaInfo(e)}else if(1===n.packetType){let A=this._timestampBase+i,e={unit:n.data,length:n.data.byteLength,dts:A,pts:A};d.samples.push(e),d.length+=n.data.length}else u.e(this.TAG,"Flv: Unsupported AAC data type "+n.packetType)}else if(2===r){if(!l.codec){let i=this._parseMP3AudioData(A,e+1,t-1,!0);if(null==i)return;l.audioSampleRate=i.samplingRate,l.channelCount=i.channelCount,l.codec=i.codec,l.originalCodec=i.originalCodec,l.refSampleDuration=1152/l.audioSampleRate*l.timescale,u.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",l);let n=this._mediaInfo;n.audioCodec=l.codec,n.audioSampleRate=l.audioSampleRate,n.audioChannelCount=l.channelCount,n.audioDataRate=i.bitRate,n.hasVideo?null!=n.videoCodec&&(n.mimeType='video/x-flv; codecs="'+n.videoCodec+","+n.audioCodec+'"'):n.mimeType='video/x-flv; codecs="'+n.audioCodec+'"',n.isComplete()&&this._onMediaInfo(n)}let n=this._parseMP3AudioData(A,e+1,t-1,!1);if(null==n)return;let r=this._timestampBase+i,s={unit:n,length:n.byteLength,dts:r,pts:r};d.samples.push(s),d.length+=n.length}}_parseAACAudioData(A,e,t){if(t<=1)return void u.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");let i={},n=new Uint8Array(A,e,t);return i.packetType=n[0],0===n[0]?i.data=this._parseAACAudioSpecificConfig(A,e+1,t-1):i.data=n.subarray(1),i}_parseAACAudioSpecificConfig(A,e,t){let i=new Uint8Array(A,e,t),n=null,r=0,s=0,a=null,o=0,l=null;if(r=s=i[0]>>>3,o=(7&i[0])<<1|i[1]>>>7,o<0||o>=this._mpegSamplingRates.length)return void this._onError(G.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");let u=this._mpegSamplingRates[o],d=(120&i[1])>>>3;if(d<0||d>=8)return void this._onError(G.FORMAT_ERROR,"Flv: AAC invalid channel configuration");5===r&&(l=(7&i[1])<<1|i[2]>>>7,a=(124&i[2])>>>2);let h=self.navigator.userAgent.toLowerCase();return-1!==h.indexOf("firefox")?o>=6?(r=5,n=new Array(4),l=o-3):(r=2,n=new Array(2),l=o):-1!==h.indexOf("android")?(r=2,n=new Array(2),l=o):(r=5,l=o,n=new Array(4),o>=6?l=o-3:1===d&&(r=2,n=new Array(2),l=o)),n[0]=r<<3,n[0]|=(15&o)>>>1,n[1]=(15&o)<<7,n[1]|=(15&d)<<3,5===r&&(n[1]|=(15&l)>>>1,n[2]=(1&l)<<7,n[2]|=8,n[3]=0),{config:n,samplingRate:u,channelCount:d,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}_parseMP3AudioData(A,e,t,i){if(t<4)return void u.w(this.TAG,"Flv: Invalid MP3 packet, header missing!");this._littleEndian;let n=new Uint8Array(A,e,t),r=null;if(i){if(255!==n[0])return;let A=n[1]>>>3&3,e=(6&n[1])>>1,t=(240&n[2])>>>4,i=(12&n[2])>>>2,s=3!==(n[3]>>>6&3)?2:1,a=0,o=0,l=34,u="mp3";switch(A){case 0:a=this._mpegAudioV25SampleRateTable[i];break;case 2:a=this._mpegAudioV20SampleRateTable[i];break;case 3:a=this._mpegAudioV10SampleRateTable[i]}switch(e){case 1:l=34,t>>4,a=15&r;7===a?this._parseAVCVideoPacket(A,e+1,t-1,i,n,s):this._onError(G.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+a)}_parseAVCVideoPacket(A,e,t,i,n,r){if(t<4)return void u.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");let s=this._littleEndian,a=new DataView(A,e,t),o=a.getUint8(0),l=(16777215&a.getUint32(0,!s))<<8>>8;if(0===o)this._parseAVCDecoderConfigurationRecord(A,e+4,t-4);else if(1===o)this._parseAVCVideoData(A,e+4,t-4,i,n,r,l);else if(2!==o)return void this._onError(G.FORMAT_ERROR,"Flv: Invalid video packet type "+o)}_parseAVCDecoderConfigurationRecord(A,e,t){if(t<7)return void u.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");let i=this._videoMetadata,n=this._videoTrack,r=this._littleEndian,s=new DataView(A,e,t);i?void 0!==i.avcc&&u.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),i=this._videoMetadata={},i.type="video",i.id=n.id,i.timescale=this._timescale,i.duration=this._duration);let a=s.getUint8(0),o=s.getUint8(1);s.getUint8(2),s.getUint8(3);if(1!==a||0===o)return void this._onError(G.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");if(this._naluLengthSize=1+(3&s.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)return void this._onError(G.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));let l=31&s.getUint8(5);if(0===l)return void this._onError(G.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");l>1&&u.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+l);let d=6;for(let t=0;t1&&u.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+h),d++;for(let A=0;A=t){u.w(this.TAG,`Malformed Nalu near timestamp ${f}, offset = ${h}, dataSize = ${t}`);break}let i=o.getUint32(h,!a);if(3===c&&(i>>>=8),i>t-c)return void u.w(this.TAG,`Malformed Nalus near timestamp ${f}, NaluSize > DataSize!`);let n=31&o.getUint8(h+c);5===n&&(m=!0);let r=new Uint8Array(A,e+h,c+i),s={type:n,data:r};l.push(s),d+=r.byteLength,h+=c+i}if(l.length){let A=this._videoTrack,e={units:l,length:d,isKeyframe:m,dts:f,cts:s,pts:f+s};m&&(e.fileposition=n),A.samples.push(e),A.length+=d}}}var V=X;class Y{static init(){Y.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]};for(let A in Y.types)Y.types.hasOwnProperty(A)&&(Y.types[A]=[A.charCodeAt(0),A.charCodeAt(1),A.charCodeAt(2),A.charCodeAt(3)]);let A=Y.constants={};A.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),A.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),A.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),A.STSC=A.STCO=A.STTS,A.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),A.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),A.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),A.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),A.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),A.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(A){let e=8,t=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let A=0;A>>24&255,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=255&e,t.set(A,4);let r=8;for(let A=0;A>>24&255,A>>>16&255,A>>>8&255,255&A,e>>>24&255,e>>>16&255,e>>>8&255,255&e,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(A){return Y.box(Y.types.trak,Y.tkhd(A),Y.mdia(A))}static tkhd(A){let e=A.id,t=A.duration,i=A.presentWidth,n=A.presentHeight;return Y.box(Y.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(A){return Y.box(Y.types.mdia,Y.mdhd(A),Y.hdlr(A),Y.minf(A))}static mdhd(A){let e=A.timescale,t=A.duration;return Y.box(Y.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,85,196,0,0]))}static hdlr(A){let e=null;return e="audio"===A.type?Y.constants.HDLR_AUDIO:Y.constants.HDLR_VIDEO,Y.box(Y.types.hdlr,e)}static minf(A){let e=null;return e="audio"===A.type?Y.box(Y.types.smhd,Y.constants.SMHD):Y.box(Y.types.vmhd,Y.constants.VMHD),Y.box(Y.types.minf,e,Y.dinf(),Y.stbl(A))}static dinf(){return Y.box(Y.types.dinf,Y.box(Y.types.dref,Y.constants.DREF))}static stbl(A){return Y.box(Y.types.stbl,Y.stsd(A),Y.box(Y.types.stts,Y.constants.STTS),Y.box(Y.types.stsc,Y.constants.STSC),Y.box(Y.types.stsz,Y.constants.STSZ),Y.box(Y.types.stco,Y.constants.STCO))}static stsd(A){return"audio"===A.type?"mp3"===A.codec?Y.box(Y.types.stsd,Y.constants.STSD_PREFIX,Y.mp3(A)):Y.box(Y.types.stsd,Y.constants.STSD_PREFIX,Y.mp4a(A)):Y.box(Y.types.stsd,Y.constants.STSD_PREFIX,Y.avc1(A))}static mp3(A){let e=A.channelCount,t=A.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e,0,16,0,0,0,0,t>>>8&255,255&t,0,0]);return Y.box(Y.types[".mp3"],i)}static mp4a(A){let e=A.channelCount,t=A.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e,0,16,0,0,0,0,t>>>8&255,255&t,0,0]);return Y.box(Y.types.mp4a,i,Y.esds(A))}static esds(A){let e=A.config||[],t=e.length,i=new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e).concat([6,1,2]));return Y.box(Y.types.esds,i)}static avc1(A){let e=A.avcc,t=A.codecWidth,i=A.codecHeight,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t>>>8&255,255&t,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Y.box(Y.types.avc1,n,Y.box(Y.types.avcC,e))}static mvex(A){return Y.box(Y.types.mvex,Y.trex(A))}static trex(A){let e=A.id,t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Y.box(Y.types.trex,t)}static moof(A,e){return Y.box(Y.types.moof,Y.mfhd(A.sequenceNumber),Y.traf(A,e))}static mfhd(A){let e=new Uint8Array([0,0,0,0,A>>>24&255,A>>>16&255,A>>>8&255,255&A]);return Y.box(Y.types.mfhd,e)}static traf(A,e){let t=A.id,i=Y.box(Y.types.tfhd,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=Y.box(Y.types.tfdt,new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])),r=Y.sdtp(A),s=Y.trun(A,r.byteLength+16+16+8+16+8+8);return Y.box(Y.types.traf,i,n,s,r)}static sdtp(A){let e=A.samples||[],t=e.length,i=new Uint8Array(4+t);for(let A=0;A>>24&255,i>>>16&255,i>>>8&255,255&i,e>>>24&255,e>>>16&255,e>>>8&255,255&e],0);for(let A=0;A>>24&255,e>>>16&255,e>>>8&255,255&e,i>>>24&255,i>>>16&255,i>>>8&255,255&i,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s],12+16*A)}return Y.box(Y.types.trun,r)}static mdat(A){return Y.box(Y.types.mdat,A)}}Y.init();var q=Y;var W=class{static getSilentFrame(A,e){if("mp4a.40.2"===A){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null}};class Z{constructor(A,e,t,i,n){this.dts=A,this.pts=e,this.duration=t,this.originalDts=i,this.isSyncPoint=n,this.fileposition=null}}class J{constructor(){this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}appendSyncPoint(A){A.isSyncPoint=!0,this.syncPoints.push(A)}}class K{constructor(){this._list=[]}clear(){this._list=[]}appendArray(A){let e=this._list;0!==A.length&&(e.length>0&&A[0].originalDts=e[n].dts&&Ae[i].lastSample.originalDts&&A=e[i].lastSample.originalDts&&(i===e.length-1||i0&&(n=this._searchNearestSegmentBefore(t.originalBeginDts)+1),this._lastAppendLocation=n,this._list.splice(n,0,t)}getLastSegmentBefore(A){let e=this._searchNearestSegmentBefore(A);return e>=0?this._list[e]:null}getLastSampleBefore(A){let e=this.getLastSegmentBefore(A);return null!=e?e.lastSample:null}getLastSyncPointBefore(A){let e=this._searchNearestSegmentBefore(A),t=this._list[e].syncPoints;for(;0===t.length&&e>0;)e--,t=this._list[e].syncPoints;return t.length>0?t[t.length-1]:null}}var AA=class{constructor(A){this.TAG="MP4Remuxer",this._config=A,this._isLive=!0===A.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new $("audio"),this._videoSegmentInfoList=new $("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!y.chrome||!(y.version.major<50||50===y.version.major&&y.version.build<2661)),this._fillSilentAfterSeek=y.msedge||y.msie,this._mp3UseMpegAudio=!y.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}destroy(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null}bindDataSource(A){return A.onDataAvailable=this.remux.bind(this),A.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this}get onInitSegment(){return this._onInitSegment}set onInitSegment(A){this._onInitSegment=A}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(A){this._onMediaSegment=A}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=void 0}seek(A){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()}remux(A,e){if(!this._onMediaSegment)throw new c("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(A,e),this._remuxVideo(e),this._remuxAudio(A)}_onTrackMetadataReceived(A,e){let t=null,i="mp4",n=e.codec;if("audio"===A)this._audioMeta=e,"mp3"===e.codec&&this._mp3UseMpegAudio?(i="mpeg",n="",t=new Uint8Array):t=q.generateInitSegment(e);else{if("video"!==A)return;this._videoMeta=e,t=q.generateInitSegment(e)}if(!this._onInitSegment)throw new c("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(A,{type:A,data:t.buffer,codec:n,container:`${A}/${i}`,mediaDuration:e.duration})}_calculateDtsBase(A,e){this._dtsBaseInited||(A.samples&&A.samples.length&&(this._audioDtsBase=A.samples[0].dts),e.samples&&e.samples.length&&(this._videoDtsBase=e.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)}flushStashedSamples(){let A=this._videoStashedLastSample,e=this._audioStashedLastSample,t={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=A&&(t.samples.push(A),t.length=A.length);let i={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=e&&(i.samples.push(e),i.length=e.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(t,!0),this._remuxAudio(i,!0)}_remuxAudio(A,e){if(null==this._audioMeta)return;let t=A,i=t.samples,n=void 0,r=-1,s=-1,a=this._audioMeta.refSampleDuration,o="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,l=this._dtsBaseInited&&void 0===this._audioNextDts,d=!1;if(!i||0===i.length)return;if(1===i.length&&!e)return;let h=0,c=null,f=0;o?(h=0,f=t.length):(h=8,f=8+t.length);let m=null;if(i.length>1&&(m=i.pop(),f-=m.length),null!=this._audioStashedLastSample){let A=this._audioStashedLastSample;this._audioStashedLastSample=null,i.unshift(A),f+=A.length}null!=m&&(this._audioStashedLastSample=m);let g=i[0].dts-this._dtsBase;if(this._audioNextDts)n=g-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())n=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(d=!0);else{let A=this._audioSegmentInfoList.getLastSampleBefore(g);if(null!=A){let e=g-(A.originalDts+A.duration);e<=3&&(e=0),n=g-(A.dts+A.duration+e)}else n=0}if(d){let A=g-n,e=this._videoSegmentInfoList.getLastSegmentBefore(g);if(null!=e&&e.beginDts=1?p[p.length-1].duration:Math.floor(a);let d=!1,h=null;if(l>1.5*a&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!y.safari){d=!0;let A=Math.abs(l-a),e=Math.ceil(A/a),i=o+a;u.w(this.TAG,`Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: ${o+l} ms, expected: ${o+Math.round(a)} ms, delta: ${Math.round(A)} ms, generate: ${e} frames`);let n=W.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==n&&(u.w(this.TAG,`Unable to generate silent frame for ${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`),n=t),h=[];for(let A=0;A0){let e=h[h.length-1];e.duration=A-e.dts}let e={dts:A,pts:A,cts:0,unit:n,size:n.byteLength,duration:0,originalDts:s,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};h.push(e),f+=e.size,i+=a}let r=h[h.length-1];r.duration=o+l-r.dts,l=Math.round(a)}p.push({dts:o,pts:o,cts:0,unit:e.unit,size:e.unit.byteLength,duration:l,originalDts:s,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),d&&p.push.apply(p,h)}o?c=new Uint8Array(f):(c=new Uint8Array(f),c[0]=f>>>24&255,c[1]=f>>>16&255,c[2]=f>>>8&255,c[3]=255&f,c.set(q.types.mdat,4));for(let A=0;A1&&(h=i.pop(),d-=h.length),null!=this._videoStashedLastSample){let A=this._videoStashedLastSample;this._videoStashedLastSample=null,i.unshift(A),d+=A.length}null!=h&&(this._videoStashedLastSample=h);let c=i[0].dts-this._dtsBase;if(this._videoNextDts)n=c-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())n=0;else{let A=this._videoSegmentInfoList.getLastSampleBefore(c);if(null!=A){let e=c-(A.originalDts+A.duration);e<=3&&(e=0),n=c-(A.dts+A.duration+e)}else n=0}let f=new J,m=[];for(let A=0;A=1?m[m.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(s){let A=new Z(o,u,d,e.dts,!0);A.fileposition=e.fileposition,f.appendSyncPoint(A)}m.push({dts:o,pts:u,cts:l,units:e.units,size:e.length,isKeyframe:s,duration:d,originalDts:t,flags:{isLeading:0,dependsOn:s?2:1,isDependedOn:s?1:0,hasRedundancy:0,isNonSync:s?0:1}})}u=new Uint8Array(d),u[0]=d>>>24&255,u[1]=d>>>16&255,u[2]=d>>>8&255,u[3]=255&d,u.set(q.types.mdat,4);for(let A=0;A{i.timestampBase=t,t+=i.duration,i.cors=A.cors,i.withCredentials=A.withCredentials,e.referrerPolicy&&(i.referrerPolicy=e.referrerPolicy)}),isNaN(t)||this._mediaDataSource.duration===t||(this._mediaDataSource.duration=t),this._mediaInfo=null,this._demuxer=null,this._remuxer=null,this._ioctl=null,this._pendingSeekTime=null,this._pendingResolveSeekPoint=null,this._statisticsReporter=null}destroy(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._emitter.removeAllListeners(),this._emitter=null}on(A,e){this._emitter.addListener(A,e)}off(A,e){this._emitter.removeListener(A,e)}start(){this._loadSegment(0),this._enableStatisticsReporter()}_loadSegment(A,e){this._currentSegmentIndex=A;let t=this._mediaDataSource.segments[A],i=this._ioctl=new O(t,this._config,A);i.onError=this._onIOException.bind(this),i.onSeeked=this._onIOSeeked.bind(this),i.onComplete=this._onIOComplete.bind(this),i.onRedirect=this._onIORedirect.bind(this),i.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),e?this._demuxer.bindDataSource(this._ioctl):i.onDataArrival=this._onInitChunkArrival.bind(this),i.open(e)}stop(){this._internalAbort(),this._disableStatisticsReporter()}_internalAbort(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}pause(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}resume(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}seek(A){if(null==this._mediaInfo||!this._mediaInfo.isSeekable())return;let e=this._searchSegmentIndexContains(A);if(e===this._currentSegmentIndex){let t=this._mediaInfo.segments[e];if(null==t)this._pendingSeekTime=A;else{let e=t.getNearestKeyframe(A);this._remuxer.seek(e.milliseconds),this._ioctl.seek(e.fileposition),this._pendingResolveSeekPoint=e.milliseconds}}else{let t=this._mediaInfo.segments[e];if(null==t)this._pendingSeekTime=A,this._internalAbort(),this._remuxer.seek(),this._remuxer.insertDiscontinuity(),this._loadSegment(e);else{let i=t.getNearestKeyframe(A);this._internalAbort(),this._remuxer.seek(A),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[e].timestampBase,this._loadSegment(e,i.fileposition),this._pendingResolveSeekPoint=i.milliseconds,this._reportSegmentMediaInfo(e)}}this._enableStatisticsReporter()}_searchSegmentIndexContains(A){let e=this._mediaDataSource.segments,t=e.length-1;for(let i=0;i0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,i=this._demuxer.parseChunks(A,e);else if((t=V.probe(A)).match){this._demuxer=new V(t,this._config),this._remuxer||(this._remuxer=new AA(this._config));let n=this._mediaDataSource;null==n.duration||isNaN(n.duration)||(this._demuxer.overridedDuration=n.duration),"boolean"==typeof n.hasAudio&&(this._demuxer.overridedHasAudio=n.hasAudio),"boolean"==typeof n.hasVideo&&(this._demuxer.overridedHasVideo=n.hasVideo),this._demuxer.timestampBase=n.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),i=this._demuxer.parseChunks(A,e)}else t=null,u.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then(()=>{this._internalAbort()}),this._emitter.emit(eA.DEMUX_ERROR,G.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),i=0;return i}_onMediaInfo(A){null==this._mediaInfo&&(this._mediaInfo=Object.assign({},A),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,I.prototype));let e=Object.assign({},A);Object.setPrototypeOf(e,I.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=e,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then(()=>{let A=this._pendingSeekTime;this._pendingSeekTime=null,this.seek(A)})}_onMetaDataArrived(A){this._emitter.emit(eA.METADATA_ARRIVED,A)}_onScriptDataArrived(A){this._emitter.emit(eA.SCRIPTDATA_ARRIVED,A)}_onIOSeeked(){this._remuxer.insertDiscontinuity()}_onIOComplete(A){let e=A+1;e0&&A[0].originalDts===t&&(t=A[0].pts),this._emitter.emit(eA.RECOMMEND_SEEKPOINT,t)}}_enableStatisticsReporter(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}_disableStatisticsReporter(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}_reportSegmentMediaInfo(A){let e=this._mediaInfo.segments[A],t=Object.assign({},e);t.duration=this._mediaInfo.duration,t.segmentCount=this._mediaInfo.segmentCount,delete t.segments,delete t.keyframesIndex,this._emitter.emit(eA.MEDIA_INFO,t)}_reportStatisticsInfo(){let A={};A.url=this._ioctl.currentURL,A.hasRedirect=this._ioctl.hasRedirect,A.hasRedirect&&(A.redirectedURL=this._ioctl.currentRedirectedURL),A.speed=this._ioctl.currentSpeed,A.loaderType=this._ioctl.loaderType,A.currentSegmentIndex=this._currentSegmentIndex,A.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(eA.STATISTICS_INFO,A)}};var iA=function(A){let e=null,t=function(e,t){A.postMessage({msg:"logcat_callback",data:{type:e,logcat:t}})}.bind(this);function i(e,t){let i={msg:eA.INIT_SEGMENT,data:{type:e,data:t}};A.postMessage(i,[t.data])}function n(e,t){let i={msg:eA.MEDIA_SEGMENT,data:{type:e,data:t}};A.postMessage(i,[t.data])}function r(){let e={msg:eA.LOADING_COMPLETE};A.postMessage(e)}function a(){let e={msg:eA.RECOVERED_EARLY_EOF};A.postMessage(e)}function o(e){let t={msg:eA.MEDIA_INFO,data:e};A.postMessage(t)}function l(e){let t={msg:eA.METADATA_ARRIVED,data:e};A.postMessage(t)}function u(e){let t={msg:eA.SCRIPTDATA_ARRIVED,data:e};A.postMessage(t)}function d(e){let t={msg:eA.STATISTICS_INFO,data:e};A.postMessage(t)}function h(e,t){A.postMessage({msg:eA.IO_ERROR,data:{type:e,info:t}})}function c(e,t){A.postMessage({msg:eA.DEMUX_ERROR,data:{type:e,info:t}})}function f(e){A.postMessage({msg:eA.RECOMMEND_SEEKPOINT,data:e})}s.install(),A.addEventListener("message",(function(s){switch(s.data.cmd){case"init":e=new tA(s.data.param[0],s.data.param[1]),e.on(eA.IO_ERROR,h.bind(this)),e.on(eA.DEMUX_ERROR,c.bind(this)),e.on(eA.INIT_SEGMENT,i.bind(this)),e.on(eA.MEDIA_SEGMENT,n.bind(this)),e.on(eA.LOADING_COMPLETE,r.bind(this)),e.on(eA.RECOVERED_EARLY_EOF,a.bind(this)),e.on(eA.MEDIA_INFO,o.bind(this)),e.on(eA.METADATA_ARRIVED,l.bind(this)),e.on(eA.SCRIPTDATA_ARRIVED,u.bind(this)),e.on(eA.STATISTICS_INFO,d.bind(this)),e.on(eA.RECOMMEND_SEEKPOINT,f.bind(this));break;case"destroy":e&&(e.destroy(),e=null),A.postMessage({msg:"destroyed"});break;case"start":e.start();break;case"stop":e.stop();break;case"seek":e.seek(s.data.param);break;case"pause":e.pause();break;case"resume":e.resume();break;case"logging_config":{let A=s.data.param;M.applyConfig(A),!0===A.enableCallback?M.addLogListener(t):M.removeLogListener(t);break}}}))};var nA=class{constructor(A,e){if(this.TAG="Transmuxer",this._emitter=new o.a,e.enableWorker&&"undefined"!=typeof Worker)try{let i=t(17);this._worker=i(iA),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[A,e]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},M.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:M.getConfig()})}catch(t){u.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new tA(A,e)}else this._controller=new tA(A,e);if(this._controller){let A=this._controller;A.on(eA.IO_ERROR,this._onIOError.bind(this)),A.on(eA.DEMUX_ERROR,this._onDemuxError.bind(this)),A.on(eA.INIT_SEGMENT,this._onInitSegment.bind(this)),A.on(eA.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),A.on(eA.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),A.on(eA.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),A.on(eA.MEDIA_INFO,this._onMediaInfo.bind(this)),A.on(eA.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),A.on(eA.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),A.on(eA.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),A.on(eA.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}destroy(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),M.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}on(A,e){this._emitter.addListener(A,e)}off(A,e){this._emitter.removeListener(A,e)}hasWorker(){return null!=this._worker}open(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}close(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}seek(A){this._worker?this._worker.postMessage({cmd:"seek",param:A}):this._controller.seek(A)}pause(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}resume(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}_onInitSegment(A,e){Promise.resolve().then(()=>{this._emitter.emit(eA.INIT_SEGMENT,A,e)})}_onMediaSegment(A,e){Promise.resolve().then(()=>{this._emitter.emit(eA.MEDIA_SEGMENT,A,e)})}_onLoadingComplete(){Promise.resolve().then(()=>{this._emitter.emit(eA.LOADING_COMPLETE)})}_onRecoveredEarlyEof(){Promise.resolve().then(()=>{this._emitter.emit(eA.RECOVERED_EARLY_EOF)})}_onMediaInfo(A){Promise.resolve().then(()=>{this._emitter.emit(eA.MEDIA_INFO,A)})}_onMetaDataArrived(A){Promise.resolve().then(()=>{this._emitter.emit(eA.METADATA_ARRIVED,A)})}_onScriptDataArrived(A){Promise.resolve().then(()=>{this._emitter.emit(eA.SCRIPTDATA_ARRIVED,A)})}_onStatisticsInfo(A){Promise.resolve().then(()=>{this._emitter.emit(eA.STATISTICS_INFO,A)})}_onIOError(A,e){Promise.resolve().then(()=>{this._emitter.emit(eA.IO_ERROR,A,e)})}_onDemuxError(A,e){Promise.resolve().then(()=>{this._emitter.emit(eA.DEMUX_ERROR,A,e)})}_onRecommendSeekpoint(A){Promise.resolve().then(()=>{this._emitter.emit(eA.RECOMMEND_SEEKPOINT,A)})}_onLoggingConfigChanged(A){this._worker&&this._worker.postMessage({cmd:"logging_config",param:A})}_onWorkerMessage(A){let e=A.data,t=e.data;if("destroyed"===e.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(e.msg){case eA.INIT_SEGMENT:case eA.MEDIA_SEGMENT:this._emitter.emit(e.msg,t.type,t.data);break;case eA.LOADING_COMPLETE:case eA.RECOVERED_EARLY_EOF:this._emitter.emit(e.msg);break;case eA.MEDIA_INFO:Object.setPrototypeOf(t,I.prototype),this._emitter.emit(e.msg,t);break;case eA.METADATA_ARRIVED:case eA.SCRIPTDATA_ARRIVED:case eA.STATISTICS_INFO:this._emitter.emit(e.msg,t);break;case eA.IO_ERROR:case eA.DEMUX_ERROR:this._emitter.emit(e.msg,t.type,t.info);break;case eA.RECOMMEND_SEEKPOINT:this._emitter.emit(e.msg,t);break;case"logcat_callback":u.emitter.emit("log",t.type,t.logcat)}}};var rA={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"};var sA=class{constructor(A){this.TAG="MSEController",this._config=A,this._emitter=new o.a,this._config.isLive&&null==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new K}destroy(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null}on(A,e){this._emitter.addListener(A,e)}off(A,e){this._emitter.removeListener(A,e)}attachMediaElement(A){if(this._mediaSource)throw new c("MediaSource has been attached to an HTMLMediaElement!");let e=this._mediaSource=new window.MediaSource;e.addEventListener("sourceopen",this.e.onSourceOpen),e.addEventListener("sourceended",this.e.onSourceEnded),e.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=A,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),A.src=this._mediaSourceObjectURL}detachMediaElement(){if(this._mediaSource){let A=this._mediaSource;for(let e in this._sourceBuffers){let t=this._pendingSegments[e];t.splice(0,t.length),this._pendingSegments[e]=null,this._pendingRemoveRanges[e]=null,this._lastInitSegments[e]=null;let i=this._sourceBuffers[e];if(i){if("closed"!==A.readyState){try{A.removeSourceBuffer(i)}catch(A){u.e(this.TAG,A.message)}i.removeEventListener("error",this.e.onSourceBufferError),i.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[e]=null,this._sourceBuffers[e]=null}}if("open"===A.readyState)try{A.endOfStream()}catch(A){u.e(this.TAG,A.message)}A.removeEventListener("sourceopen",this.e.onSourceOpen),A.removeEventListener("sourceended",this.e.onSourceEnded),A.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}appendInitSegment(A,e){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(A),void this._pendingSegments[A.type].push(A);let t=A,i=""+t.container;t.codec&&t.codec.length>0&&(i+=";codecs="+t.codec);let n=!1;if(u.v(this.TAG,"Received Initialization Segment, mimeType: "+i),this._lastInitSegments[t.type]=t,i!==this._mimeTypes[t.type]){if(this._mimeTypes[t.type])u.v(this.TAG,`Notice: ${t.type} mimeType changed, origin: ${this._mimeTypes[t.type]}, target: ${i}`);else{n=!0;try{let A=this._sourceBuffers[t.type]=this._mediaSource.addSourceBuffer(i);A.addEventListener("error",this.e.onSourceBufferError),A.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(A){return u.e(this.TAG,A.message),void this._emitter.emit(rA.ERROR,{code:A.code,msg:A.message})}}this._mimeTypes[t.type]=i}e||this._pendingSegments[t.type].push(t),n||this._sourceBuffers[t.type]&&!this._sourceBuffers[t.type].updating&&this._doAppendSegments(),y.safari&&"audio/mpeg"===t.container&&t.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=t.mediaDuration/1e3,this._updateMediaSourceDuration())}appendMediaSegment(A){let e=A;this._pendingSegments[e.type].push(e),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();let t=this._sourceBuffers[e.type];!t||t.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}seek(A){for(let A in this._sourceBuffers){if(!this._sourceBuffers[A])continue;let e=this._sourceBuffers[A];if("open"===this._mediaSource.readyState)try{e.abort()}catch(A){u.e(this.TAG,A.message)}this._idrList.clear();let t=this._pendingSegments[A];if(t.splice(0,t.length),"closed"!==this._mediaSource.readyState){for(let t=0;t=1&&A-e.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1}_doCleanupSourceBuffer(){let A=this._mediaElement.currentTime;for(let e in this._sourceBuffers){let t=this._sourceBuffers[e];if(t){let i=t.buffered,n=!1;for(let t=0;t=this._config.autoCleanupMaxBackwardDuration){n=!0;let t=A-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[e].push({start:r,end:t})}}else s0&&(isNaN(e)||t>e)&&(u.v(this.TAG,`Update MediaSource duration from ${e} to ${t}`),this._mediaSource.duration=t),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}_doRemoveRanges(){for(let A in this._pendingRemoveRanges){if(!this._sourceBuffers[A]||this._sourceBuffers[A].updating)continue;let e=this._sourceBuffers[A],t=this._pendingRemoveRanges[A];for(;t.length&&!e.updating;){let A=t.shift();e.remove(A.start,A.end)}}}_doAppendSegments(){let A=this._pendingSegments;for(let e in A)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating&&A[e].length>0){let t=A[e].shift();if(t.timestampOffset){let A=this._sourceBuffers[e].timestampOffset,i=t.timestampOffset/1e3;Math.abs(A-i)>.1&&(u.v(this.TAG,`Update MPEG audio timestampOffset from ${A} to ${i}`),this._sourceBuffers[e].timestampOffset=i),delete t.timestampOffset}if(!t.data||0===t.data.byteLength)continue;try{this._sourceBuffers[e].appendBuffer(t.data),this._isBufferFull=!1,"video"===e&&t.hasOwnProperty("info")&&this._idrList.appendArray(t.info.syncPoints)}catch(A){this._pendingSegments[e].unshift(t),22===A.code?(this._isBufferFull||this._emitter.emit(rA.BUFFER_FULL),this._isBufferFull=!0):(u.e(this.TAG,A.message),this._emitter.emit(rA.ERROR,{code:A.code,msg:A.message}))}}}_onSourceOpen(){if(u.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0){let A=this._pendingSourceBufferInit;for(;A.length;){let e=A.shift();this.appendInitSegment(e,!0)}}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(rA.SOURCE_OPEN)}_onSourceEnded(){u.v(this.TAG,"MediaSource onSourceEnded")}_onSourceClose(){u.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))}_hasPendingSegments(){let A=this._pendingSegments;return A.video.length>0||A.audio.length>0}_hasPendingRemoveRanges(){let A=this._pendingRemoveRanges;return A.video.length>0||A.audio.length>0}_onSourceBufferUpdateEnd(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(rA.UPDATE_END)}_onSourceBufferError(A){u.e(this.TAG,"SourceBuffer Error: "+A)}};const aA={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},oA={NETWORK_EXCEPTION:p.EXCEPTION,NETWORK_STATUS_CODE_INVALID:p.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:p.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:p.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:G.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:G.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:G.CODEC_UNSUPPORTED};var lA=class{constructor(A,e){if(this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new o.a,this._config=L(),"object"==typeof e&&Object.assign(this._config,e),"flv"!==A.type.toLowerCase())throw new f("FlvPlayer requires an flv MediaDataSource input!");!0===A.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=A,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;let t=y.chrome&&(y.version.major<50||50===y.version.major&&y.version.build<2661);this._alwaysSeekKeyframe=!!(t||y.msedge||y.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}destroy(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}on(A,e){A===T.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then(()=>{this._emitter.emit(T.MEDIA_INFO,this.mediaInfo)}):A===T.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then(()=>{this._emitter.emit(T.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(A,e)}off(A,e){this._emitter.removeListener(A,e)}attachMediaElement(A){if(this._mediaElement=A,A.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),A.addEventListener("seeking",this.e.onvSeeking),A.addEventListener("canplay",this.e.onvCanPlay),A.addEventListener("stalled",this.e.onvStalled),A.addEventListener("progress",this.e.onvProgress),this._msectl=new sA(this._config),this._msectl.on(rA.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(rA.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(rA.SOURCE_OPEN,()=>{this._mseSourceOpened=!0,this._hasPendingLoad&&(this._hasPendingLoad=!1,this.load())}),this._msectl.on(rA.ERROR,A=>{this._emitter.emit(T.ERROR,aA.MEDIA_ERROR,oA.MEDIA_MSE_ERROR,A)}),this._msectl.attachMediaElement(A),null!=this._pendingSeekTime)try{A.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(A){}}detachMediaElement(){this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)}load(){if(!this._mediaElement)throw new c("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new c("FlvPlayer.load() has been called, please call unload() first!");this._hasPendingLoad||(this._config.deferLoadAfterSourceOpen&&!1===this._mseSourceOpened?this._hasPendingLoad=!0:(this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new nA(this._mediaDataSource,this._config),this._transmuxer.on(eA.INIT_SEGMENT,(A,e)=>{this._msectl.appendInitSegment(e)}),this._transmuxer.on(eA.MEDIA_SEGMENT,(A,e)=>{if(this._msectl.appendMediaSegment(e),this._config.lazyLoad&&!this._config.isLive){let A=this._mediaElement.currentTime;e.info.endDts>=1e3*(A+this._config.lazyLoadMaxDuration)&&null==this._progressChecker&&(u.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}}),this._transmuxer.on(eA.LOADING_COMPLETE,()=>{this._msectl.endOfStream(),this._emitter.emit(T.LOADING_COMPLETE)}),this._transmuxer.on(eA.RECOVERED_EARLY_EOF,()=>{this._emitter.emit(T.RECOVERED_EARLY_EOF)}),this._transmuxer.on(eA.IO_ERROR,(A,e)=>{this._emitter.emit(T.ERROR,aA.NETWORK_ERROR,A,e)}),this._transmuxer.on(eA.DEMUX_ERROR,(A,e)=>{this._emitter.emit(T.ERROR,aA.MEDIA_ERROR,A,{code:-1,msg:e})}),this._transmuxer.on(eA.MEDIA_INFO,A=>{this._mediaInfo=A,this._emitter.emit(T.MEDIA_INFO,Object.assign({},A))}),this._transmuxer.on(eA.METADATA_ARRIVED,A=>{this._emitter.emit(T.METADATA_ARRIVED,A)}),this._transmuxer.on(eA.SCRIPTDATA_ARRIVED,A=>{this._emitter.emit(T.SCRIPTDATA_ARRIVED,A)}),this._transmuxer.on(eA.STATISTICS_INFO,A=>{this._statisticsInfo=this._fillStatisticsInfo(A),this._emitter.emit(T.STATISTICS_INFO,Object.assign({},this._statisticsInfo))}),this._transmuxer.on(eA.RECOMMEND_SEEKPOINT,A=>{this._mediaElement&&!this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=A/1e3)}),this._transmuxer.open()))}unload(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(A){this._mediaElement.volume=A}get muted(){return this._mediaElement.muted}set muted(A){this._mediaElement.muted=A}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(A){this._mediaElement?this._internalSeek(A):this._pendingSeekTime=A}get mediaInfo(){return Object.assign({},this._mediaInfo)}get statisticsInfo(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)}_fillStatisticsInfo(A){if(A.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return A;let e=!0,t=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){let A=this._mediaElement.getVideoPlaybackQuality();t=A.totalVideoFrames,i=A.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(t=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):e=!1;return e&&(A.decodedFrames=t,A.droppedFrames=i),A}_onmseUpdateEnd(){if(!this._config.lazyLoad||this._config.isLive)return;let A=this._mediaElement.buffered,e=this._mediaElement.currentTime,t=0,i=0;for(let n=0;n=e+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(u.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}_onmseBufferFull(){u.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()}_suspendTransmuxer(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}_checkProgressAndResume(){let A=this._mediaElement.currentTime,e=this._mediaElement.buffered,t=!1;for(let i=0;i=n&&A=r-this._config.lazyLoadRecoverDuration&&(t=!0);break}}t&&(window.clearInterval(this._progressChecker),this._progressChecker=null,t&&(u.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}_isTimepointBuffered(A){let e=this._mediaElement.buffered;for(let t=0;t=i&&A0){let e=this._mediaElement.buffered.start(0);(e<1&&A0&&e.currentTime0){let A=t.start(0);if(A<1&&e{this._emitter.emit(T.MEDIA_INFO,this.mediaInfo)}):A===T.STATISTICS_INFO&&null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then(()=>{this._emitter.emit(T.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(A,e)}off(A,e){this._emitter.removeListener(A,e)}attachMediaElement(A){if(this._mediaElement=A,A.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),null!=this._pendingSeekTime)try{A.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(A){}}detachMediaElement(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}load(){if(!this._mediaElement)throw new c("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}unload(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(A){this._mediaElement.volume=A}get muted(){return this._mediaElement.muted}set muted(A){this._mediaElement.muted=A}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(A){this._mediaElement?this._mediaElement.currentTime=A:this._pendingSeekTime=A}get mediaInfo(){let A={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(A.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(A.width=this._mediaElement.videoWidth,A.height=this._mediaElement.videoHeight)),A}get statisticsInfo(){let A={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return A;let e=!0,t=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){let A=this._mediaElement.getVideoPlaybackQuality();t=A.totalVideoFrames,i=A.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(t=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):e=!1;return e&&(A.decodedFrames=t,A.droppedFrames=i),A}_onvLoadedMetadata(A){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(T.MEDIA_INFO,this.mediaInfo)}_reportStatisticsInfo(){this._emitter.emit(T.STATISTICS_INFO,this.statisticsInfo)}};s.install();let dA={createPlayer:function(A,e){let t=A;if(null==t||"object"!=typeof t)throw new f("MediaDataSource must be an javascript object!");if(!t.hasOwnProperty("type"))throw new f("MediaDataSource must has type field to indicate video file type!");switch(t.type){case"flv":return new lA(t,e);default:return new uA(t,e)}},isSupported:function(){return C.supportMSEH264Playback()},getFeatureList:function(){return C.getFeatureList()}};dA.BaseLoader=v,dA.LoaderStatus=g,dA.LoaderErrors=p,dA.Events=T,dA.ErrorTypes=aA,dA.ErrorDetails=oA,dA.FlvPlayer=lA,dA.NativePlayer=uA,dA.LoggingControl=M,Object.defineProperty(dA,"version",{enumerable:!0,get:function(){return"__VERSION__"}});var hA=dA,cA=t(2),fA=t.n(cA),mA=t(5),gA={insert:"head",singleton:!1};fA()(mA.a,gA),mA.a.locals;function pA(A){return(pA="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A})(A)}function vA(A,e){for(var t=0;t0?t:null}}],(t=[{key:"shouldComponentUpdate",value:function(A){return this.props.serviceData.length!==A.serviceData}},{key:"componentDidMount",value:function(){var A=this;this.init(),window.addEventListener("resize",(function(){A.init()}))}},{key:"init",value:function(){this.setCanvasSize()}},{key:"setCanvasSize",value:function(){var A=this.state.id,e=document.getElementById(A).parentNode,t=e.offsetWidth,i=e.offsetHeight;this.setData({width:t+"px",height:i+"px"})}},{key:"removeTags",value:function(A,e){for(var t=document.getElementsByTagName(A),i=t.length-1;i>=0;i--)t[i].className==e&&t[i].parentNode.removeChild(t[i])}},{key:"draw",value:function(){var A=this.state,e=A.id,t=A.serviceData,i=A.width,n=A.height,r=A.mode,s=A.disabled,a=document.getElementById(e).getContext("2d");a.clearRect(0,0,parseFloat(i),parseFloat(n)),this.removeTags("input",this.props.listId?this.props.listId:e+""),this.drawLine(a,t),this.drawCircleAll(a,t),this.drawWriting(a,t),"false"===s&&("click"===r?this.isontouchend()?this.touchMove():this.clickMove():this.isontouchend()?this.touchMove():this.mouseMove())}},{key:"isontouchend",value:function(){return"ontouchend"in document}},{key:"drawCircleAll",value:function(A,e){for(var t=0;th&&(h=parseFloat(e[f][0])),parseFloat(e[f][1])h&&(h=parseFloat(e[f][0])),parseFloat(e[f][1])0)for(var v in u)p.style[v]=u[v];p.value=A,p.className=this.props.listId?this.props.listId+"":m+"",p.oninput=function(A){var e=s.split(/\n/);e[i]=A.target.value,n.setState({title:e.join("\n")}),n.props.wenziChange(e.join("\n"))},g.appendChild(p)}},{key:"clickMove",value:function(){var A=this,e=this.state,t=e.id,i=e.serviceData;document.getElementById(t).onclick=function(e){var t=e.layerX,n=e.layerY;A.selectedIndex||0===A.selectedIndex?(i[A.selectedIndex]=[t,n],A.selectedIndex=null,A.setData({serviceData:i}),A.sendFather(i)):(A.selectBox(t,n),A.setData({serviceData:i}))}}},{key:"mouseMove",value:function(){var A=this,e=this.state.id,t=document.getElementById(e);t.onmousedown=function(e){var i=A.state.serviceData,n=e.layerX,r=e.layerY;A.selectBox(n,r)&&(t.onmousemove=function(e){i[A.selectedIndex]=[e.layerX,e.layerY],A.setData({serviceData:i})})},t.onmouseup=function(e){t.onmousemove=null,A.selectedIndex=null,A.setData({serviceData:A.state.serviceData});var i=e.layerX,n=e.layerY;A.selectBox(i,n)&&A.sendFather(A.state.serviceData)}}},{key:"touchMove",value:function(){var A=this,e=this.state,t=e.id,i=e.serviceData,n=document.getElementById(t),r=n.parentNode,s=r.getBoundingClientRect().top,a=r.getBoundingClientRect().left;n.ontouchstart=function(e){var t=e.touches[0].pageX-a,r=e.touches[0].pageY-s;A.selectBox(t,r)&&(n.ontouchmove=function(e){i[A.selectedIndex]=[e.touches[0].pageX-a,e.touches[0].pageY-s],A.setData({serviceData:i})})},n.ontouchend=function(e){A.selectedIndex=null,n.ontouchmove=null,A.setData({serviceData:i});var t=e.changedTouches[0].pageX-a,r=e.changedTouches[0].pageY-s;A.selectBox(t,r)&&A.sendFather(i)}}},{key:"selectBox",value:function(A,e){var t=this.state,i=t.serviceData,n=t.circleRadius+t.circleBorderWidth;this.selectedIndex=null;for(var r=0;r0?t:null}}],(t=[{key:"componentDidMount",value:function(){var A=this.state.mode;"react"===A?this.setReact():this.setPolygon()}},{key:"isNull",value:function(){var A=this.state.id,e=document.getElementById(this[A].state.id),t=document.createElement("canvas");return t.width=e.width,t.height=e.height,e.toDataURL()==t.toDataURL()}},{key:"setReact",value:function(){var A=this,e=this.state.id;this.count=0;var t=document.getElementById(this[e].state.id),i=function(t){var i=A.state.serviceData,n=t.layerX,r=t.layerY;if(0===A.count)i[1][1]=r,i[2]=[n,r],i[3][0]=n;else if(A[e].selectedIndex||0===A[e].selectedIndex){switch(i[A[e].selectedIndex]=[n,r],A[e].selectedIndex){case 0:i[1][0]=n,i[3][1]=r;break;case 1:i[0][0]=n,i[2][1]=r;break;case 2:i[1][1]=r,i[3][0]=n;break;case 3:i[0][1]=r,i[2][0]=n}A.props.change(i)}A.setState({serviceData:i},(function(){A[e].draw()}))};t.addEventListener("mousedown",(function(n){if(2!==n.button){var r=n.layerX,s=n.layerY,a=[r,s];if(0===A.state.serviceData.length){A.count++;var o=[[].concat(a),[].concat(a),[].concat(a),[].concat(a)];A.setState({serviceData:o},(function(){A[e].draw()})),t.addEventListener("mousemove",i)}else A[e].selectBox(r,s)&&(A.count++,t.addEventListener("mousemove",i))}})),t.addEventListener("mouseup",(function(A){t.removeEventListener("mousemove",i)})),t.oncontextmenu=function(A){A.preventDefault()}}},{key:"setPolygon",value:function(){var A=this,e=this.state.id;this.state.serviceData.length>1?this.serviceDataFlag=!0:this.polygonCount=0;var t=document.getElementById(this[e].state.id),i=function(t){var i=t.layerX,n=t.layerY,r=A.state.serviceData;r.push([i,n]),A.setState({serviceData:r},(function(){A[e].draw()}))};this.serviceDataFlag||t.addEventListener("click",i),t.oncontextmenu=function(e){e.preventDefault(),2===e.button&&(0==A.polygonCount&&(A.polygonCount++,A.sendFather(A.state.serviceData)),t.removeEventListener("click",i))}}},{key:"isInPolygon",value:function(A,e,t){var i,n,r,s=0,a=e.length;n=e[0];for(var o=1;o<=a;o++)r=e[o%a],A[0]>Math.min(n[0],r[0])&&A[0]<=Math.max(n[0],r[0])&&A[1]<=Math.max(n[1],r[1])&&n[0]!=r[0]&&(i=(A[0]-n[0])*(r[1]-n[1])/(r[0]-n[0])+n[1],(n[1]==r[1]||A[1]<=i)&&s++),n=r;return s%2!=0||!!t.selectBox(A[0],A[1])}},{key:"wenziChange",value:function(A){this.setState({title:A}),this.props.wenziChange(A)}},{key:"change",value:function(A){this.sendFather(A)}},{key:"sendFather",value:function(A){"true"!==this.state.disabled&&this.props.change(A)}},{key:"render",value:function(){var A=this,e=this.state,t=e.serviceData,i=e.disabled,r=e.circleRadius,s=e.circleBorderWidth,a=e.circleBorderColor,o=e.circleInColor,l=e.circleSelectColor,u=e.lineColor,d=e.lineWidth,h=e.areaColor,c=e.title,f=e.titleColor,m=e.titleFont,g=e.titleLineHeight,p=e.titleBackgroundColor,v=e.titlePadding,_=e.titleTextAlign,y=e.titleWidth,b=e.titleFillColor,E=e.inputStyle,w=e.position,R=e.id;return n.a.createElement(JA,{serviceData:t,disabled:i,circleRadius:r,circleBorderWidth:s,circleBorderColor:a,circleSelectColor:l,circleInColor:o,lineColor:u,lineWidth:d,areaColor:h,title:c,titleColor:f,titleFont:m,titleLineHeight:g,titleBackgroundColor:p,titlePadding:v,titleTextAlign:_,titleWidth:y,titleFillColor:b,position:w,inputStyle:E,listId:this.props.listId,ref:function(e){A[R]=e},wenziChange:function(e){return A.wenziChange(e)},change:function(e){return A.change(e)}})}}])&&Ae(e.prototype,t),i&&Ae(e,i),s}(i.Component),se=t(9),ae={insert:"head",singleton:!1};fA()(se.a,ae),se.a.locals;function oe(A){return(oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A})(A)}function le(A,e,t){return e in A?Object.defineProperty(A,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):A[e]=t,A}function ue(A,e){for(var t=0;t0?t:null}}],(i=[{key:"componentDidMount",value:function(){var A=this.props.list;A&&A.length>0&&(this.selectIndex=A[A.length-1].id),this.selectArea()}},{key:"clickIt",value:function(A){var e=this.props.list,t=(new Date).getTime();e&&0!==e.length?this[e[e.length-1].id+e[e.length-1].mode].isNull()?this.props.err(!1,"画布为空,请先绘制在添加。"):e[e.length-1].serviceData?(e.push({id:t+"",title:this.props.placeholder?this.props.placeholder:"请输入",mode:A}),this.selectIndex=t+""):this.props.err(!1,"画布没有保存,请先绘制完成在添加"):((e=[]).push({id:t,title:this.props.placeholder?this.props.placeholder:"请输入",mode:A}),this.selectIndex=t),this.props.change(e)}},{key:"delete",value:function(){var A=this,e=this.state.list.filter((function(e){return e.id===A.selectIndex})),t=this[e[0].id+e[0].mode];t[t.state.id].removeTags("input",t.props.listId),this.props.delete(this.selectIndex,"发出删除指令")}},{key:"change",value:function(A){var e=this,t=this.props.list;t=t.map((function(t){return t.id===e.selectIndex&&(t.serviceData=JSON.parse(JSON.stringify(A))),t})),this.props.change(t)}},{key:"selectArea",value:function(){var A=this,e=this.state.id;document.getElementById(e).onclick=function(e){var t=A.props.list,i=e.layerX,n=e.layerY;if(A.indexflag=!1,t)for(var r=0;rn!=d>n&&i<(u-o)*(n-l)/(d-l)+o;h&&(r=!r)}return!(h||!t.selectBox(A[0],A[1]))||r}},{key:"wenziChange",value:function(A,e){this.props.wenziChange(A,e)}},{key:"render",value:function(){var A=this,e=this.state,i=e.id,r=e.disabled,s=e.circleRadius,a=e.circleBorderWidth,o=e.circleBorderColor,l=e.circleInColor,u=e.circleSelectColor,d=e.lineColor,h=e.lineWidth,c=e.areaColor,f=e.title,m=e.titleColor,g=e.titleFont,p=e.titleLineHeight,v=e.titleBackgroundColor,_=e.titlePadding,y=e.titleTextAlign,b=e.titleWidth,E=e.titleFillColor,w=e.position,R=this.props.list;return n.a.createElement("div",{id:i,style:{width:"100%",height:"100%",position:"relative"}},n.a.createElement("div",{className:"buttonFunAreaSelectPlus",onClick:function(){return A.clickIt("react")},style:{background:"url("+t(11)+") no-repeat center center",backgroundSize:"100% 200%"}},"添加矩形"),n.a.createElement("div",{className:"buttonFunAreaSelectPlus",onClick:function(){return A.delete()},style:{background:"url("+t(11)+") no-repeat center center",backgroundSize:"100% 200%"}},"删除"),R&&R.map((function(e,t){return n.a.createElement(re,{disabled:r,circleRadius:s,circleBorderWidth:a,circleBorderColor:o,circleSelectColor:u,circleInColor:l,lineColor:d,lineWidth:h,areaColor:c,title:e.title?e.title:f,titleColor:e.titleColor?e.titleColor:m,titleFont:e.titleFont?e.titleFont:g,titleLineHeight:e.titleLineHeight?e.titleLineHeight:p,titleBackgroundColor:e.titleBackgroundColor?e.titleBackgroundColor:v,titlePadding:e.titlePadding?e.titlePadding:_,titleTextAlign:e.titleTextAlign?e.titleTextAlign:y,titleWidth:e.titleWidth?e.titleWidth:b,titleFillColor:e.titleFillColor?e.titleFillColor:E,position:w,key:e.id,listId:e.id,serviceData:e.serviceData,ref:function(t){A[e.id+e.mode]=t},mode:e.mode,wenziChange:function(e){return A.wenziChange(e,t)},change:function(e){return A.change(e)}})})))}}])&&ue(e.prototype,i),r&&ue(e,r),a}(i.Component);console.log("%c中科视语-组件库","text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);font-size:35px")}])})); \ No newline at end of file diff --git a/package.json b/package.json index c605187..44ae35e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zzreact", - "version": "1.0.15", + "version": "1.0.20", "description": "react中使用的组件更新选区组件升级的bug", "main": "dist/index.js", "files": [ diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..84f42de --- /dev/null +++ b/src/App.css @@ -0,0 +1,12 @@ +*{ + margin: 0; + padding: 0; +} +#kuangneiCon11{ + position: relative; +} +.flvWai{ + position: absolute; + top: 0; + left: 0; +} \ No newline at end of file diff --git a/src/components/areaSelete/areaSelete.js b/src/components/areaSelete/areaSelete.js index 546d504..597b2bd 100644 --- a/src/components/areaSelete/areaSelete.js +++ b/src/components/areaSelete/areaSelete.js @@ -1,4 +1,5 @@ import React, { Component } from "react" +import imgCom from "../imgCom/imgCom"; import "./areaSelete.css" export default class AreaSelete extends Component { constructor() { @@ -24,6 +25,9 @@ export default class AreaSelete extends Component { titleBackgroundColor: "",//字的北京颜色支持rgba titlePadding: "10px",//文字的padding titleTextAlign: "center", + titleWidth: 100, + titleFillColor: "", + inputStyle:{}, position: [10, 10],//文字的位置 serviceData: [] } @@ -81,7 +85,7 @@ export default class AreaSelete extends Component { var canvasEl = document.getElementById(id) var ctx = canvasEl.getContext("2d"); ctx.clearRect(0, 0, parseFloat(width), parseFloat(height)); - this.removeTags("input", id + ""); + this.removeTags("input", this.props.listId?this.props.listId:id + ""); this.drawLine(ctx, serviceData); this.drawCircleAll(ctx, serviceData); this.drawWriting(ctx, serviceData) @@ -136,11 +140,33 @@ export default class AreaSelete extends Component { ctx.stroke(); } drawWriting(ctx, data) {//写文字 - let { title, titleColor, titleFont, titleLineHeight, position, titlePadding } = this.state; - // ctx.font = titleFont || "18px bold 黑体"; - // ctx.fillStyle = titleColor || "#fff"; - // ctx.lineHeight = titleLineHeight || titleFont.split(" ")[0]; - // ctx.textBaseline = "middle"; + let { title, titleColor, titleFont, titleLineHeight, position, titlePadding, disabled } = this.state; + ctx.font = titleFont || "18px bold 黑体"; + ctx.fillStyle = titleColor || "#fff"; + ctx.lineHeight = titleLineHeight || titleFont.split(" ")[0]; + ctx.textBaseline = "middle"; + var lineHeight = parseInt(titleLineHeight || titleFont.split(" ")[0]) + if (disabled === "true") { + this.ctxWnzi(ctx, data) + } else { + var x = 0; + var y = 99999999; + for (var i = 0; i < data.length; i++) { + if (parseFloat(data[i][0]) > x) x = parseFloat(data[i][0]); + if (parseFloat(data[i][1]) < y) y = parseFloat(data[i][1]); + } + if(title){ + title.split(/\n/).forEach((item, index) => { + this.inputStyleCreate(item, x + (position[0] || 15), y + (position[1] || 15) + index * (lineHeight + 3 * parseInt(titlePadding)), index) + }) + } + } + } + ctxWnzi(ctx, data) {//画布写文字 + let { title, titleColor, titleFont, titleLineHeight, position, titleWidth, titlePadding, titleFillColor } = this.state; + ctx.font = titleFont || "18px bold 黑体"; + ctx.lineHeight = titleLineHeight || titleFont.split(" ")[0]; + ctx.textBaseline = "middle"; var lineHeight = parseInt(titleLineHeight || titleFont.split(" ")[0]) var x = 0; var y = 99999999; @@ -149,11 +175,15 @@ export default class AreaSelete extends Component { if (parseFloat(data[i][1]) < y) y = parseFloat(data[i][1]); } title.split(/\n/).forEach((item, index) => { - this.inputStyleCreate(item, x + (position[0] || 15), y + (position[1] || 15) + index * (lineHeight + 3 * parseInt(titlePadding))) + ctx.fillStyle = titleFillColor||"rgba(15, 62, 166, 0.2)"; + ctx.fill(); + ctx.fillRect(x + (position[0] || 15), y + (position[1] || 15) + index * (lineHeight + 2 * parseInt(titlePadding)) - parseFloat(lineHeight / 2) - parseFloat(parseInt(titlePadding) / 2), titleWidth + parseInt(titlePadding), lineHeight + parseInt(titlePadding)); + ctx.fillStyle = titleColor || "#fff";; + ctx.fillText(item, x + (position[0] || 15) + parseFloat(parseInt(titlePadding) / 2), y + (position[1] || 15) + index * (lineHeight + 2 * parseInt(titlePadding))) }) } - inputStyleCreate(title, x, y) { - let { titleColor, titleFont, titleTextAlign, titleLineHeight, titleBackgroundColor, titlePadding,disabled, id } = this.state; + inputStyleCreate(title, x, y,index) { + let { title:titleY,titleColor, titleFont, titleTextAlign,inputStyle, titleLineHeight, titleBackgroundColor,titleWidth, titlePadding, id } = this.state; var canvasEl = document.getElementById(id) var parentEl = canvasEl.parentNode; var input = document.createElement("input"); @@ -163,16 +193,24 @@ export default class AreaSelete extends Component { input.style.backgroundColor = titleBackgroundColor || "rgba(40, 177, 217, 0.2)"; input.style.padding = titlePadding; input.style.textAlign = titleTextAlign; - input.style.display = disabled==="true"?true:false; input.style.position = "absolute"; input.style.border = "none"; input.style.left = x + "px"; input.style.top = y + "px"; input.style.zIndex = "100"; + input.style.width = titleWidth + "px"; + if(Object.keys(inputStyle).length>0){//判断是否有自定义样式,有的话进行循环追加 + for(var key in inputStyle){ + input.style[key] = inputStyle[key] + } + } input.value = title; - input.className = id + ""; + input.className = this.props.listId?this.props.listId+"":id + ""; input.oninput = (e) => { - console.log(e.target.value) + var arr = titleY.split(/\n/) + arr[index] = e.target.value + this.setState({title:arr.join("\n")}) + this.props.wenziChange(arr.join("\n")) } parentEl.appendChild(input) } diff --git a/src/components/funAreaSelect/funAreaSelect.js b/src/components/funAreaSelect/funAreaSelect.js index 4c63347..ea859f0 100644 --- a/src/components/funAreaSelect/funAreaSelect.js +++ b/src/components/funAreaSelect/funAreaSelect.js @@ -4,7 +4,7 @@ export default class FunAreaSelect extends Component { constructor(props) { super(props); this.state = { - id:new Date().getTime()+"fun", + id: new Date().getTime() + "fun", serviceData: [], mode: "polygon",//polygon react disabled: "false",//判断是否可以移动 false是可以移动 @@ -21,7 +21,13 @@ export default class FunAreaSelect extends Component { titleColor: "#000",//文字的颜色 titleFont: "14px bold 黑体",//文字的字体 titleLineHeight: "",//文字的行高 + titleBackgroundColor: "",//字的北京颜色支持rgba + titlePadding: "10px",//文字的padding + titleTextAlign: "center", + titleWidth: 100, + titleFillColor: "", position: [10, 10],//文字的位置 + inputStyle:{} } } static getDerivedStateFromProps(props, state) { @@ -48,7 +54,7 @@ export default class FunAreaSelect extends Component { } } isNull() {//判断画布是否为空 - let {id} = this.state; + let { id } = this.state; var canvasEl = document.getElementById(this[id].state.id)//获取canvas的id 这id是动态的所以要用ref进行获取 var blank = document.createElement('canvas');//系统获取一个空canvas对象 blank.width = canvasEl.width; @@ -56,7 +62,7 @@ export default class FunAreaSelect extends Component { return canvasEl.toDataURL() == blank.toDataURL();//比较值相等则为空 } setReact() {//设置矩形 - let {id} = this.state; + let { id } = this.state; this.count = 0;//用来判断是否生成了一个框 var canvasEl = document.getElementById(this[id].state.id)//获取canvas的id 这id是动态的所以要用ref进行获取 var mousemoveFc = (e) => { @@ -111,8 +117,8 @@ export default class FunAreaSelect extends Component { this[id].draw(); }) canvasEl.addEventListener("mousemove", mousemoveFc) - }else{ - if(this[id].selectBox(left, top)){ + } else { + if (this[id].selectBox(left, top)) { this.count++; canvasEl.addEventListener("mousemove", mousemoveFc) } @@ -124,14 +130,14 @@ export default class FunAreaSelect extends Component { canvasEl.oncontextmenu = (e) => { e.preventDefault() } } setPolygon() {//设置多边形 - let {id} = this.state + let { id } = this.state if (this.state.serviceData.length > 1) { this.serviceDataFlag = true//用来看外面传来的是否有数据,有数据就不用在添加 } else { this.polygonCount = 0 } var canvasEl = document.getElementById(this[id].state.id)//获取canvas的id 这id是动态的所以要用ref进行获取 - var onclickRE = (e)=>{ + var onclickRE = (e) => { var left = e.layerX; var top = e.layerY; let { serviceData } = this.state; @@ -143,7 +149,7 @@ export default class FunAreaSelect extends Component { }) } if (!this.serviceDataFlag) { - canvasEl.addEventListener("click",onclickRE); + canvasEl.addEventListener("click", onclickRE); } canvasEl.oncontextmenu = (e) => { e.preventDefault() @@ -152,7 +158,7 @@ export default class FunAreaSelect extends Component { this.polygonCount++ this.sendFather(this.state.serviceData) } - canvasEl.removeEventListener("click",onclickRE); + canvasEl.removeEventListener("click", onclickRE); } } } @@ -192,6 +198,12 @@ export default class FunAreaSelect extends Component { return true; } } + wenziChange(val){ + this.setState({ + title:val + }) + this.props.wenziChange(val) + } change(val) {//当改变的时候在向父组件发送值 this.sendFather(val) } @@ -213,7 +225,13 @@ export default class FunAreaSelect extends Component { titleColor, titleFont, titleLineHeight, - position,id } = this.state + titleBackgroundColor, + titlePadding, + titleTextAlign, + titleWidth, + titleFillColor, + inputStyle, + position, id } = this.state return { this[id] = inst }} change={(val) => this.change(val)}> + inputStyle={inputStyle} + listId={this.props.listId} + ref={(inst) => { this[id] = inst }} wenziChange={(val)=>this.wenziChange(val)} change={(val) => this.change(val)}> } } \ No newline at end of file diff --git a/src/components/funAreaSelectPlus/123.png b/src/components/funAreaSelectPlus/123.png new file mode 100644 index 0000000..bef60fe --- /dev/null +++ b/src/components/funAreaSelectPlus/123.png diff --git a/src/components/funAreaSelectPlus/funAreaSelectPlus.css b/src/components/funAreaSelectPlus/funAreaSelectPlus.css new file mode 100644 index 0000000..ed685c2 --- /dev/null +++ b/src/components/funAreaSelectPlus/funAreaSelectPlus.css @@ -0,0 +1,14 @@ +.buttonFunAreaSelectPlus{ + position: absolute; + right: -100px; + top: 0; + width: 100px; + height: 50px; + text-align: center; + line-height: 50px; + color: white; + cursor: pointer; +} +.buttonFunAreaSelectPlus:nth-child(2){ + top: 50px; +} \ No newline at end of file diff --git a/src/components/funAreaSelectPlus/funAreaSelectPlus.js b/src/components/funAreaSelectPlus/funAreaSelectPlus.js index 50ab5d4..38a68e3 100644 --- a/src/components/funAreaSelectPlus/funAreaSelectPlus.js +++ b/src/components/funAreaSelectPlus/funAreaSelectPlus.js @@ -1,5 +1,6 @@ import React, { Component } from 'react'; import FunAreaSelect from "../funAreaSelect/funAreaSelect.js" +import "./funAreaSelectPlus.css" export default class FunAreaSelectPlus extends Component { constructor() { super(); @@ -19,7 +20,13 @@ export default class FunAreaSelectPlus extends Component { titleColor: "#000",//文字的颜色 titleFont: "14px bold 黑体",//文字的字体 titleLineHeight: "",//文字的行高 + titleBackgroundColor: "",//字的北京颜色支持rgba + titlePadding: "10px",//文字的padding + titleTextAlign: "center", + titleWidth: 100, + titleFillColor: "", position: [10, 10],//文字的位置 + inputStyle:{} } } static getDerivedStateFromProps(props, state) { @@ -40,46 +47,51 @@ export default class FunAreaSelectPlus extends Component { } } componentDidMount() { - let {list} = this.props; - if(list&&list.length>0){ + let { list } = this.props; + if (list && list.length > 0) { this.selectIndex = list[list.length - 1].id; } this.selectArea(); } clickIt(mode) { - let { list } = this.props; + let { list} = this.props; var id = new Date().getTime() - if (!list||list.length === 0) { + if (!list || list.length === 0) { list = [] list.push({ id: id, + title:this.props.placeholder?this.props.placeholder:"请输入", mode: mode }) this.selectIndex = id; } else { var boo = this[list[list.length - 1].id + list[list.length - 1].mode].isNull()//判断画布是否为空 - if (boo) {//画布为空 - this.props.err(false,"画布为空,请先绘制在添加。") + this.props.err(false, "画布为空,请先绘制在添加。") } else if (!list[list.length - 1].serviceData) { - this.props.err(false,"画布没有保存,请先绘制完成在添加") + this.props.err(false, "画布没有保存,请先绘制完成在添加") } else { list.push({ - id: id, + id: id+"", + title:this.props.placeholder?this.props.placeholder:"请输入", mode: mode }) - this.selectIndex = id;//这个地方是用来判断当前点击或者添加的第几个,通过这个控制着list父子组件的同时赋值 + this.selectIndex = id+"";//这个地方是用来判断当前点击或者添加的第几个,通过这个控制着list父子组件的同时赋值 } } this.props.change(list) } - delete(){ - this.props.delete(this.selectIndex,"发出删除指令") + delete() { + let {list} = this.state; + var nowList = list.filter(item=>item.id === this.selectIndex)//这个地方this是id不是索引值这里要注意,一开始是索引值但是发现无法匹配所有所以改变了一下 + var limian = this[nowList[0].id + nowList[0].mode];//删除input的输入框 + limian[limian.state.id].removeTags("input",limian.props.listId) + this.props.delete(this.selectIndex, "发出删除指令") } change(val) {//保存后把最后一个放入这个list中储存,这样可以判断是否储存,点击的时候是否在点内 let { list } = this.props; - list = list.map(item=>{ - if(item.id === this.selectIndex){ + list = list.map(item => { + if (item.id === this.selectIndex) { item.serviceData = JSON.parse(JSON.stringify(val)); } return item @@ -95,7 +107,7 @@ export default class FunAreaSelectPlus extends Component { var left = e.layerX var top = e.layerY this.indexflag = false;//这里是为了防止点击到重复的区域导致无法选区的情况 - if(list){ + if (list) { for (var i = 0; i < list.length; i++) { if (list[i].serviceData) { var myRef = this[list[i].id + list[i].mode].state.id;//获取内部id @@ -134,6 +146,9 @@ export default class FunAreaSelectPlus extends Component { } return inside; } + wenziChange(val,index){//文字发生改变的时候 + this.props.wenziChange(val,index) + } render() { let { id, disabled, circleRadius, circleBorderWidth, @@ -147,15 +162,22 @@ export default class FunAreaSelectPlus extends Component { titleColor, titleFont, titleLineHeight, + titleBackgroundColor, + titlePadding, + titleTextAlign, + titleWidth, + titleFillColor, position } = this.state; - let {list} = this.props + let { list } = this.props return (
- - - +
this.clickIt("react")} style={{background: "url("+require("./123.png")+") no-repeat center center",backgroundSize:"100% 200%"}}>添加矩形
+
this.delete()} style={{background: "url("+require("./123.png")+") no-repeat center center",backgroundSize:"100% 200%"}}>删除
+ {/* */} + {/* */} + {/* */} { - list&&list.map((item, index) => { + list && list.map((item, index) => { return { this[item.id + item.mode] = inst }} mode={item.mode} change={(val) => this.change(val)}> + title={item.title ? item.title : title} + titleColor={item.titleColor ? item.titleColor : titleColor} + titleFont={item.titleFont ? item.titleFont : titleFont} + titleLineHeight={item.titleLineHeight ? item.titleLineHeight : titleLineHeight} + titleBackgroundColor={item.titleBackgroundColor ? item.titleBackgroundColor : titleBackgroundColor} + titlePadding={item.titlePadding ? item.titlePadding : titlePadding} + titleTextAlign={item.titleTextAlign ? item.titleTextAlign : titleTextAlign} + titleWidth={item.titleWidth ? item.titleWidth : titleWidth} + titleFillColor={item.titleFillColor ? item.titleFillColor : titleFillColor} + position={position} key={item.id} listId={item.id} serviceData={item.serviceData} ref={(inst) => { this[item.id + item.mode] = inst }} mode={item.mode} + wenziChange={(val)=>this.wenziChange(val,index)} + change={(val) => this.change(val)}> }) }
) diff --git a/src/index.js b/src/index.js index 08b42eb..0b2f9a4 100644 --- a/src/index.js +++ b/src/index.js @@ -1,80 +1,160 @@ import React, { Component } from 'react'; import ReactDOM from 'react-dom'; -import { FlvCom, Timer, ImgCom, AreaSelete, FunAreaSelect, FunAreaSelectPlus } from "./components/index" -// import {FlvCom,Timer,ImgCom,AreaSelete,FunAreaSelect,FunAreaSelectPlus} from "../dist/index.js" -class App extends Component { - constructor() { - super(); - this.state = { - imgUrl: "C:/imagelib/imgalarm/2020/12/21/192.168.166.155/192.168.166.155_00_20201221181716755_ALARM_210_9891_HEL_SNAP.jpg", - serviceData: [[431, 55], [479, 55], [481, 107], [435, 107]], - arr: [ - { - id: "1", title: "点位1", num: 5, serviceData: [ - ["95.16", "13.60"], - ["126.40", "13.37"], - ["127.37", "28.82"], - ["95.65", "28.59"]] - }, - { - id: "2", title: "点位2", num: 5, serviceData: [ - ["210.34", "12.68"], - ["233.76", "12.68"], - ["234.74", "24.67"], - ["212.29", "24.67"] - ] - }, - { - id: "3", title: "点位3", num: 5, serviceData: [ - ["256.21", "29.51"], - ["283.05", "29.51"], - ["282.08", "41.50"], - ["257.19", "41.50"] - ] - }, - ], - serviceData2: [], - list: [{ "id": 1608808157114,title:"点位1\n偏移量:10mm","mode": "polygon", "serviceData": [[323, 76], [336, 195], [617, 151], [452, 45]] }, { "id": 1608808178878,title:"点位1\n偏移量\nsdfas:10mm", "mode": "react", "serviceData": [[615, 379], [615, 254], [309, 254], [309, 379]] }] - // lsit:[] - } - } - changeSelect(val) {//保存后把最后一个放入这个list中储存,这样可以判断是否储存,点击的时候是否在点内 - this.setState({ - list:val - }) - } - delete(selectIndex){ - let {list} = this.state - list = list.filter(item=>item.id!==selectIndex) - this.setState({list:list}) +import { FunAreaSelectPlus, FlvCom } from "../dist/index.js" +import axios from "axios" +import './App.css'; +axios.defaults.baseURL = "http://192.168.10.144:8083" +export default class App extends Component { + constructor() { + super(); + this.state = { + list: [],//可以设置初始值 + options: [], + optionsTwo: [], + valueOne: "", + valueTwo: "", + videoUrl: "", + key:new Date().getTime() } - err(falg,msg){ - console.log(falg,msg) + } + componentDidMount() { + this.getOptionOne() + } + getdian(companyId, deviceId) { + axios.get("/site_config/get", { + params: { + companyId: companyId, + deviceId: deviceId + } + }).then(res => { + var content = JSON.parse(res.data.resInfo.content) + content = content.map(item => { + return { + id: item.id, + mode: "react", + title:"点位"+item.id, + serviceData: this.getFenbial(JSON.parse(item.coordinate),"show") + } + }) + if(this.state.videoUrl !== res.data.resInfo.url){ + this.setState({ videoUrl: res.data.resInfo.url}) + } + this.setState({ list: content ,key:new Date().getTime()}) + }) + } + getFenbial(data, type) { + var changeXPx = 1080, changeYPx = 1920; + var width = document.getElementById("kuangneiCon11").offsetWidth; + var height = document.getElementById("kuangneiCon11").offsetHeight; + if (type === "show") {//展示 + return data.map(item => { + return [((item[0] / changeXPx) * width).toFixed(2), ((item[1] / changeYPx) * height).toFixed(2)] + }) + } else {//储存的时候 + return data.map(item => { + return [((item[0] / width) * changeXPx).toFixed(2), ((item[1] / height) * changeYPx).toFixed(2)] + }) } - render() { - let { imgUrl, serviceData, serviceData2, arr, list } = this.state; - return ( -
- { this.changeSelect(val)}} delete={(selectIndex)=>{this.delete(selectIndex)}} err={(falg,msg)=>{this.err(falg,msg)}}> - {/* */} - {/*
- { - arr.map(item => { - return ( this.changeSelect(val)}>) - }) - } -
*/} - {/* */} - {/* - */} -
- ) - } + } + getOptionOne() { + axios.get("/site_config/selectSite", { + params: { + companyId: "2fe2a70a-fa66-4233-9179-89e3531209d7" + } + }).then(res => { + this.setState({ options: res.data.reInfo, valueOne: res.data.reInfo[0].companyId }, () => { + this.getOptionTwo(res.data.reInfo[0].companyId) + }) + }) + } + getOptionTwo(companyId) { + axios.get("/site_config/selectDevices", { + params: { + companyId: companyId + } + }).then(res => { + this.setState({ optionsTwo: res.data.reInfo, valueTwo: res.data.reInfo[0].deviceId }, () => { + this.getdian(this.state.valueOne, this.state.valueTwo) + }) + }) + } + changeSelect(val) {//修改完的list传到父组件中 + this.setState({ + list: val + }) + } + delete(selectIndex) {//删除的id会返回给父组件 + let { list } = this.state + list = list.filter(item => item.id !== selectIndex) + this.setState({ list: list }) + } + err(falg, msg) {//当画布为空的时候,绘画进行行中的时候,会返回状态和错误的消息 + console.log(falg, msg) + } + optionsOneSelect(e) { + this.getOptionTwo(e.target.value) + this.setState({ valueOne: e.target.value }) + } + optionsTwoSelect(e) { + this.setState({ valueTwo: e.target.value }, () => { + this.getdian(this.state.valueOne, this.state.valueTwo) + }) + } + baocun() { + let { list, valueOne, valueTwo } = this.state; + var content = list.map(item => { + return { + id: item.title?item.title.replace(/[^0-9]/ig,""):item.id, + coordinate: JSON.stringify(this.getFenbial(item.serviceData)) + } + }) + axios.post("/site_config/update", { + companyId: valueOne, + deviceId: valueTwo, + content: JSON.stringify(content) + }).then(res => { + this.getdian(this.state.valueOne, this.state.valueTwo) + }) + } + wenziChange(val,index){ + let {list} = this.state; + list[index].title = val; + this.setState({list:list}) + } + render() { + let { list, options, optionsTwo, valueOne, valueTwo, videoUrl,key } = this.state + return ( +
+
+ + + +
+
+ + this.wenziChange(val,index)} + titleTextAlign="left" + titleWidth="50" + change={(val) => { this.changeSelect(val) }} delete={(selectIndex) => { this.delete(selectIndex) }} err={(falg, msg) => { this.err(falg, msg) }}> +
+
+ ) + } } -ReactDOM.render(, document.getElementById('root')); +ReactDOM.render(, document.getElementById('root')); \ No newline at end of file diff --git a/src/index1.js b/src/index1.js new file mode 100644 index 0000000..387d224 --- /dev/null +++ b/src/index1.js @@ -0,0 +1,103 @@ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +// import { FlvCom, Timer, ImgCom, AreaSelete, FunAreaSelect, FunAreaSelectPlus } from "./components/index" +import {FlvCom,Timer,ImgCom,AreaSelete,FunAreaSelect,FunAreaSelectPlus} from "../dist/index.js" +class App extends Component { + constructor() { + super(); + this.state = { + imgUrl: "C:/imagelib/imgalarm/2020/12/21/192.168.166.155/192.168.166.155_00_20201221181716755_ALARM_210_9891_HEL_SNAP.jpg", + serviceData: [[431, 55], [479, 55], [481, 107], [435, 107]], + arr: [ + { + id: "1", title: "点位1", num: 5, serviceData: [ + ["95.16", "13.60"], + ["126.40", "13.37"], + ["127.37", "28.82"], + ["95.65", "28.59"]] + }, + { + id: "2", title: "点位2", num: 5, serviceData: [ + ["210.34", "12.68"], + ["233.76", "12.68"], + ["234.74", "24.67"], + ["212.29", "24.67"] + ] + }, + { + id: "3", title: "点位3", num: 5, serviceData: [ + ["256.21", "29.51"], + ["283.05", "29.51"], + ["282.08", "41.50"], + ["257.19", "41.50"] + ] + }, + ], + serviceData2: [], + list: [{ "id": "1", title: "点位1", "mode": "polygon", "serviceData": [[323, 76], [336, 195], [617, 151], [452, 45]] }, { "id": "2", title: "点位1\n偏移量:10mm", "mode": "react", "serviceData": [[615, 379], [615, 254], [309, 254], [309, 379]] }] + // lsit:[] + } + } + wenziChange(val, index) { + var { list } = this.state + list[index].title = val + this.setState({ + list: list + }, () => { + console.log(this.state.list) + }) + } + changeSelect(val) {//保存后把最后一个放入这个list中储存,这样可以判断是否储存,点击的时候是否在点内 + this.setState({ + list: val + }) + } + delete(selectIndex) { + let { list } = this.state + list = list.filter(item => item.id !== selectIndex) + this.setState({ list: list }) + } + baocun() { + let {list} = this.state + this.setState({ + list:list + }) + } + err(falg, msg) { + console.log(falg, msg) + } + render() { + let { imgUrl, serviceData, serviceData2, arr, list } = this.state; + return ( +
+ + { this.changeSelect(val) }} + wenziChange={(val, index) => { this.wenziChange(val, index) }} + delete={(selectIndex) => { this.delete(selectIndex) }} + err={(falg, msg) => { this.err(falg, msg) }}> + {/* */} + {/*
+ { + arr.map(item => { + return ( this.changeSelect(val)}>) + }) + } +
*/} + {/* */} + {/* + */} + +
+ ) + } +} + +ReactDOM.render(, document.getElementById('root'));